Commission Junction
What Is Commission Junction?
Commission Junction provides a platform that connects advertisers with a network of publishers, making it easier for both parties to find suitable partnerships. Publishers promote the advertisers’ products through various channels such as websites, blogs, social media, email marketing, etc. When a user clicks on an affiliate link and completes a desired action, the publisher earns a commission.
Product Type: Affiliate
Integration Type: Starter Kit & ID Sync
Event Source Type: Web
Event Scope: Conversion Events Only
Capabilities
- Enables Commission Junction tag removal.
- Ensures event data is streaming into Commission Junction for accurate commission reporting.
Considerations
- You must obtain an access token, Enterprise ID, and Action Tracker ID from Commission Junction before sending events.
- Work with your Commission Junction representative to confirm whether you need a Simple vs. Advanced Integration Action Tracker ID.
- The default playbook supports Simple Integration; Advanced Integration requires item-level attributes in your events.
- To populate
cjEvent, the Commission Junction identity sync must be deployed (365-day cookie lifetime recommended). - Currency codes must be valid three-character ISO values.
- This integration supports batching up to 500 events per request, based on the configured batch size.
- Only order conversion events are included (order completed, updated, canceled).
Identity Sync
- Sync Available: Yes
- Required for Starter Kit: Yes
- Prerequisites: N/A
- Documentation: See Additional Commission Junction Documentation
Sync Details
- Captures the
cjeventclick ID from URL parameters. - Required to link conversion events to ad clicks. Without this sync, conversions may not be tracked.
Starter Kit Setup Guide
1. Deploy the Commission Junction Sync
- To collect the sync values (e.g.,
cjevent), you must implement a Commission Junction ID sync. Refer to the following documentation to complete the setup: Commission Junction – ID Sync Guide.
2. Gather Credentials
-
Access Token: Log in to the developer portal and create a personal access token:https://developers.cj.com/account/personal-access-tokens
(Store this safely — CJ hides it after navigation.) -
Contact CJ Support for:
- Enterprise ID
- Action Tracker ID
Notes on Action Tracker ID:
- Simple Integration → no item-level data
- Advanced Integration → supports SKU, qtyx, amtx, etc.
- The Starter Kit defaults to Simple Integration.
3. Add a Commission Junction Integration
- From the integration library, add a Commission Junction integration. Then, fill out the Connection Parameters:
| Connection Parameter | Description |
|---|---|
ACCESS_TOKEN | Token obtained from the CJ developer portal. |
ACTION_TRACKER_ID | Identifier for the commissionable action assigned by CJ. |
ENTERPRISE_ID | Advertiser’s CJ enterprise identifier. |
ENDPOINT | GraphQL endpoint identifier used for order submission. |
4. Configure Event Mapping
- MetaRouter provides all of the event mappings that Commission Junction integrations typically require. You may add custom events, parameters, or mappings in accordance with Commission Junction’s API documentation.
5. Deploy to Pipeline
- In the Pipelines tab, add your Commission Junction integration.
- Select the correct integration revision.
- Click Add Integration and finalize deployment.
Event Mappings
Global
Global mappings will be applied to all events. If your parameter names do not match the Expected Inputs provided, you will need to overwrite the Inputs provided with your own.
| Output Key | Description | Expected Input |
|---|---|---|
enterpriseId Required | String: This will pull the value of the Enterprise_ID as set in the Connection Parameters. | $$ENTERPRISE_ID$$ |
orderId Required | String: The advertiser-supplied Order ID number that identifies the transaction. Truncated after the 96th character. CJ prohibits PII. Only alphanumeric characters allowed; URL-encode special characters. | properties.order_id |
actionTrackerId Required | String: The CJ-assigned Action ID for the commissionable sale or lead. | $$ACTION_TRACKER_ID$$ |
Event Specific
order_completed
| Output Key | Description | Expected Input |
|---|---|---|
cjEvent Required | String: Unique CJ-generated token passed to your site on click that stores referring publisher data for cookieless attribution. | context.providers.commissionJunction.cjevent |
amount Required if using Simple Integration Action Tracker | Number: Subtotal of a sale or lead-based action. Decimal only. No currency symbols or commas. | properties.revenue |
discount | Number: Optional whole order discount for simple and item-based orders. | properties.discount |
coupon | String: Coupon applied to the order (e.g., SPRING25). Max length 256 characters. | properties.coupon |
currency Required | String: Three-character currency code. | properties.currency |
eventTime Required | String: Timestamp of when the event occurred. | timestamp |
verticalParameters.orderSubtotal | Number: Revenue associated with the transaction, excluding shipping and tax. | properties.revenue |
verticalParameters.taxAmount | Number: Total tax associated with the transaction. | properties.tax |
verticalParameters.itemId | String: ID for the item. (Simple Actions Only). | Expression – joins properties.products[*].product_id with commas |
| Expression Output | Object: Adds a custom parameter identifying MetaRouter as the tracking source. | Expression – outputs { customParameters = { trackingSource = "metarouter" } } |
order_updated
| Output Key | Description | Expected Input |
|---|---|---|
amount Required if using Simple Integration Action Tracker | Number: Subtotal of a sale or lead-based action. Decimal only. No currency symbols or commas. | properties.revenue |
discount | Number: Optional whole order discount for simple and item-based orders. | properties.discount |
coupon | String: Coupon applied to the order (e.g., SPRING25). Max length 256 characters. | properties.coupon |
currency Required | String: Three-character currency code. | properties.currency |
updateTime Required | String: Timestamp of when the event occurred. | timestamp |
verticalParameters.orderSubtotal | Number: Revenue associated with the transaction, excluding shipping and tax. | properties.revenue |
verticalParameters.taxAmount | Number: Total tax associated with the transaction. | properties.tax |
verticalParameters.itemId | String: ID for the item. (Simple Actions Only). | Expression – joins properties.products[*].product_id with commas |
order_canceled
| Output Key | Description | Expected Input |
|---|---|---|
updateTime Required | String: Timestamp of when the event occurred. | originalTimestamp |
Required & Recommended Identifiers
These identifiers must be mapped to Commission Junction in order for successful user matching to occur.
| Attribute | Example | Sync Injector Required? |
|---|---|---|
cjevent Required | &cjevent=adlj3gw5WWjns97fgwsf | Yes |
Integration Validation
How to check if your API request processed All successful new orders, restatements, and cancellations will be available as a new line item for that order in our Commission Detail report. You may access this information using our Commission Detail API or Commission Detail reporting in the CJ Account Manager.
For every order restatement that successfully processes, Commission Detail reports will include two new records with two unique commission IDs for the restatement. One record will appear as a "zero" record, and will be a full reversal of the order. The subsequent record will represent the new state of the order and include all information provided in the order restatement.
Test Mode: When you send a request to CJ's Tracking API, by default CJ's system will attempt to process that request in production. However you may use Test Mode to send requests that you do not want to process in production. You can do so by sending your API requests to this endpoint https://tracking.api.cj.com/graphqltest
Any API requests sent to this endpoint are subject to the same validation as the production endpoint. Additionally, we will run all requests through order processing in production, but we will not post these requests into production reporting and they will not impact any real data for your affiliate program. Test Mode will not validate whether an order is locked or closed, or if it uses open-ended locking, so it is possible for something to process correctly in Test Mode but err out in production based on the order status.
Test Mode should be used during the development process to use CJ's Tracking API, in order to not impact production data. A CJ team member can provide you with the results of your testing when you are in the development process.
Additional Commission Junction Documentation
- https://developers.cj.com/docs/advertiser-site-tracking/simple-integration
- https://developers.cj.com/docs/advertiser-site-tracking/advanced-integration
- https://developers.cj.com/docs/data-imports/new-orders-data
- https://docs.metarouter.io/docs/commission-junction-commission-junction-changelog
Updated 10 days ago