{"id":5889,"date":"2026-08-28T18:51:58","date_gmt":"2026-08-28T13:21:58","guid":{"rendered":"https:\/\/www.enactsoft.com\/resources\/?post_type=docs&#038;p=5889"},"modified":"2026-08-26T17:10:04","modified_gmt":"2026-08-26T11:40:04","password":"","slug":"cj-affiliate-integration","status":"publish","type":"docs","link":"https:\/\/www.enactsoft.com\/resources\/cj-affiliate-integration\/","title":{"rendered":"Commission Junction (CJ) Integration Guide: API, PIDs and Publisher Approval"},"content":{"rendered":"<figure class=\"wp-block-post-featured-image\"><img decoding=\"async\" width=\"1200\" height=\"630\" src=\"https:\/\/www.enactsoft.com\/resources\/wp-content\/uploads\/2026\/08\/EarnKaro-Profits-From-Every-Successful-Transaction.webp\" class=\"attachment-post-thumbnail size-post-thumbnail wp-post-image\" alt=\"Commission Junction (CJ) Integration Guide\" style=\"object-fit:cover;\" srcset=\"https:\/\/www.enactsoft.com\/resources\/wp-content\/uploads\/2026\/08\/EarnKaro-Profits-From-Every-Successful-Transaction.webp 1200w, https:\/\/www.enactsoft.com\/resources\/wp-content\/uploads\/2026\/08\/EarnKaro-Profits-From-Every-Successful-Transaction-300x158.webp 300w, https:\/\/www.enactsoft.com\/resources\/wp-content\/uploads\/2026\/08\/EarnKaro-Profits-From-Every-Successful-Transaction-1024x538.webp 1024w, https:\/\/www.enactsoft.com\/resources\/wp-content\/uploads\/2026\/08\/EarnKaro-Profits-From-Every-Successful-Transaction-768x403.webp 768w, https:\/\/www.enactsoft.com\/resources\/wp-content\/uploads\/2026\/08\/EarnKaro-Profits-From-Every-Successful-Transaction-360x189.webp 360w\" sizes=\"(max-width: 1200px) 100vw, 1200px\" \/><\/figure>\n\n\n<p class=\"wp-block-paragraph\">Commission Junction, now simply &#8220;CJ&#8221;, is one of the oldest affiliate networks still running, and one of the least forgiving if you get the identifiers wrong. A commission junction integration lives or dies on four small pieces of data: PID, AID, CID and SID. Get those wrong and every commission that comes back through CJ&#8217;s API is untraceable, you&#8217;ll see revenue land in your CJ dashboard with no way to credit the user who earned it. This guide walks through what it actually takes to connect CJ to cashback website infrastructure: the two generations of API CJ runs, how CJ&#8217;s data model maps onto a wallet, what happens when a sale gets reversed, and how to test the whole pipeline before you trust it with real user balances.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>What Is CJ Integration?<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">A commission junction integration connects a cashback or coupon platform&#8217;s publisher account to CJ&#8217;s network, so joined advertisers, tracking links, and commission data sync automatically into your own systems. If you&#8217;re weighing CJ against other networks, our overview of <a href=\"https:\/\/www.enactsoft.com\/resources\/commission-junction-affiliate-marketing-sales-funnel\/\">how affiliate networks fit into a commission junction affiliate marketing sales funnel<\/a> covers the broader picture. CJ authenticates with a Bearer Personal Access Token rather than OAuth, and splits its API into a modern GraphQL layer and a legacy REST layer, most real integrations end up touching both, because the GraphQL side covers transactions and products while some publisher-side lookups still only exist on REST.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">CJ, formerly Commission Junction and later CJ Affiliate, is one of the oldest and largest affiliate networks, founded in 1998 and now owned by <a href=\"https:\/\/www.publicisgroupe.com\/\" target=\"_blank\" rel=\"noopener\">Publicis Groupe<\/a>. It rebranded from &#8220;CJ Affiliate&#8221; to simply &#8220;<a href=\"https:\/\/www.cj.com\/\" target=\"_blank\" rel=\"noopener\">CJ<\/a>&#8221; in recent years, but the underlying network, account structure, and APIs are unchanged. CJ is headquartered in Santa Barbara, California, with additional offices across the US, UK, Germany, France, and India.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Unlike Awin, CJ does not require a network-level compliance review before you can generate a publisher account. Signup is free and near-instant. The approval work happens <strong>per advertiser<\/strong>: each brand you want to promote reviews your site independently, either through automated screening or manual review, and can take anywhere from a day to several weeks.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>What Does the CJ Affiliate API Cover?<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">CJ uses Personal Access Tokens rather than an OAuth flow, which makes authentication simpler than Awin&#8217;s or Rakuten&#8217;s. There&#8217;s no refresh cycle to build, since a PAT stays valid until you revoke it. That simplicity comes with a tradeoff: because the token doesn&#8217;t expire on its own, a leaked PAT stays usable indefinitely, so treat it with the same care you&#8217;d give a database password, not a short-lived session credential.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Personal Access Tokens<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">CJ moved away from developer keys some years ago in favor of Personal Access Tokens (PATs). A PAT is generated in the <a href=\"https:\/\/developers.cj.com\/\" target=\"_blank\" rel=\"noopener\">CJ Developer Portal<\/a> (developers.cj.com) under Authentication \u2192 Personal Access Tokens, and is used as a Bearer token on every API call.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>The CJ Commission Detail API and Two Generations of Endpoints<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>You&#8217;ll likely need both generations for a complete integration:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Modern GraphQL APIs, the CJ Commission Detail API (single POST endpoint at commissions.api.cj.com\/query) returns transaction and commission data. The Product Search API (at ads.api.cj.com) returns product and catalogue data.<\/li>\n\n\n\n<li>Legacy REST APIs, Link Search, Advertiser Lookup, and Publisher-side endpoints that predate the GraphQL migration and are still supported for existing integrations.<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong>WORTH KNOWING BEFORE YOU BUILD<\/strong> <br>The CJ Commission Detail API does not return click-level statistics, only conversions and commissions. If you need EPC or click-through data for internal reporting, you have to import CJ&#8217;s Performance Reports manually, since the API doesn&#8217;t expose them. Several third-party integration tools confirm this limitation independently.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<style>\n    .es-blog-cta {\n        background: linear-gradient(to right, #1f1b3e, #4a211f);\n        border-radius: 8px;\n        padding: 30px 20px;\n        text-align: center;\n        font-family: \"Inter\", system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif !important;\n        margin: 30px 0;\n        width: 100%;\n        box-sizing: border-box;\n        border: 1px solid rgba(255, 255, 255, 0.08);\n        -webkit-font-smoothing: antialiased !important;\n        -moz-osx-font-smoothing: grayscale !important;\n    }\n\n    .es-blog-title {\n        color: #ffffff !important;\n        font-size: 28px !important;\n        font-weight: 800 !important;\n        margin: 0 0 10px 0 !important;\n        line-height: 1.3 !important;\n        letter-spacing: 0.5px !important;\n    }\n\n    .es-blog-line {\n        width: 180px;\n        height: 3px;\n        background-color: #ff5722;\n        margin: 0 auto 12px auto;\n        border-radius: 50% 50% 50% 50% \/ 100% 100% 0% 0%;\n    }\n\n    .es-blog-desc {\n        color: #ffffff !important;\n        font-size: 16px !important;\n        font-weight: 500 !important;\n        line-height: 1.6 !important;\n        margin: 0 auto 20px auto !important;\n        max-width: 700px;\n        opacity: 0.95 !important;\n    }\n\n    .es-blog-features {\n        display: flex;\n        justify-content: center;\n        align-items: center;\n        flex-wrap: wrap;\n        gap: 12px 24px;\n        margin-bottom: 24px;\n    }\n\n    .es-blog-item {\n        color: #ffffff !important;\n        font-size: 14px !important;\n        font-weight: 600 !important;\n        display: flex;\n        align-items: center;\n        letter-spacing: 0.3px !important;\n    }\n\n    .es-blog-item::before {\n        content: \"\";\n        display: inline-block;\n        width: 6px;\n        height: 6px;\n        border-radius: 50%;\n        border: 2px solid #ff5722;\n        margin-right: 8px;\n    }\n\n    .es-blog-btn {\n        display: inline-block;\n        background-color: #ff5722 !important;\n        color: #ffffff !important;\n        padding: 14px 36px !important;\n        font-size: 16px !important;\n        font-weight: 700 !important;\n        text-decoration: none !important;\n        border-radius: 6px !important;\n        border: 2px solid #000000 !important;\n        box-shadow: 4px 4px 0px #000000 !important;\n        transition: all 0.1s ease;\n    }\n\n    .es-blog-btn:hover {\n        transform: translate(-2px, -2px);\n        box-shadow: 6px 6px 0px #000000 !important;\n        background-color: #ff6a3a !important;\n    }\n\n    .es-blog-btn:active {\n        transform: translate(4px, 4px);\n        box-shadow: 0px 0px 0px #000000 !important;\n    }\n\n    @media (max-width: 600px) {\n        .es-blog-cta {\n            padding: 24px 16px;\n        }\n\n        .es-blog-title {\n            font-size: 24px !important;\n        }\n\n        .es-blog-features {\n            flex-direction: column;\n            gap: 10px;\n        }\n    }\n<\/style>\n\n<div class=\"es-blog-cta\">\n    <h2 class=\"es-blog-title\">Understand How Affiliate Tracking Really Works<\/h2>\n\n    <div class=\"es-blog-line\"><\/div>\n\n    <p class=\"es-blog-desc\">\n        Explore how commission tracking works across different affiliate networks, from tracking clicks and conversions to managing payouts and attribution models.\n    <\/p>\n\n    <div class=\"es-blog-features\">\n        <span class=\"es-blog-item\">Multi-Network Tracking<\/span>\n        <span class=\"es-blog-item\">Commission Attribution<\/span>\n        <span class=\"es-blog-item\">Conversion Monitoring<\/span>\n    <\/div>\n\n    <a href=\"https:\/\/www.enactsoft.com\/resources\/guide-to-affiliate-commission-tracking\/\" class=\"es-blog-btn\">Read the Affiliate Tracking Guide<\/a>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>What Identifiers Do You Need? CJ PID and AID Explained<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Everything downstream of a click depends on getting four identifiers right, and CJ&#8217;s naming doesn&#8217;t make that obvious on first read. CJ PID and AID are the two that matter most, but they&#8217;re joined by CID and SID:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong>Identifier<\/strong><\/td><td><strong>What it is<\/strong><\/td><td><strong>Where it shows up<\/strong><\/td><\/tr><tr><td>CID<\/td><td>Company ID, your account number<\/td><td>Top right of the CJ dashboard, next to your name<\/td><\/tr><tr><td>PID<\/td><td>Publisher (Website) ID, a 7-digit ID per promotional property you&#8217;ve registered (site, app, social handle, newsletter)<\/td><td>Account \u2192 Websites<\/td><\/tr><tr><td>AID<\/td><td>Ad ID \/ Link ID, an 8-digit ID identifying the specific link creative a publisher generates<\/td><td>Embedded automatically when you generate a link<\/td><\/tr><tr><td>SID<\/td><td>SubID, a free-text field you set yourself for your own internal tracking<\/td><td>Appended manually to any link you build<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">This mapping is the foundation everything else sits on. Every tracking link CJ issues carries PID and AID together, and every transaction that comes back through the API carries them too, which is exactly why getting that mapping correct onto your own store and click records is the single highest-leverage thing to get right early.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>How Does the CJ Deep Link Generator Work?<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">CJ publishers generate deep links either through the dashboard&#8217;s Link Tools, or via a downloadable bookmarklet that lets you grab a tracking link to the exact product page you&#8217;re viewing without logging into CJ first. This only works for advertisers that have deep linking enabled, CJ notes that advertisers who allow it see meaningfully more sales through deep links than through homepage-only links.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If you&#8217;re building deep link generation programmatically rather than through the CJ Deep Link Generator bookmarklet, CJ&#8217;s advanced link format follows this pattern: a tracking domain, plus aid= (the link ID), pid= (your publisher\/website ID), and url= (the URL-encoded destination). CJ has historically used several tracking domains (including qksrv.net among others), so don&#8217;t hard-code a single domain, pull the correct one from the link CJ issues for that advertiser rather than assuming.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>How to Connect CJ to Cashback Website Wallets<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">CJ&#8217;s own data model for tracked activity is built around a small set of file types it uses for advertiser-side imports, and understanding that vocabulary is the key to getting the connect CJ to cashback website step right: an Action is the initial tracked event, a Concluded Action is one that has cleared the advertiser&#8217;s own return or cancellation window, and a Correction is an after-the-fact adjustment to an Action that already existed. Translating those into wallet states is straightforward once you see the pattern:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong>CJ concept<\/strong><\/td><td><strong>Wallet state<\/strong><\/td><td><strong>What triggers the move<\/strong><\/td><\/tr><tr><td>Action<\/td><td>Pending<\/td><td>A click converts into a tracked sale or lead; commission is provisional<\/td><\/tr><tr><td>Concluded Action<\/td><td>Confirmed \/ withdrawable<\/td><td>The advertiser&#8217;s own window closes without a cancellation<\/td><\/tr><tr><td>Correction<\/td><td>Reversed or adjusted<\/td><td>The advertiser retroactively changes an Action&#8217;s status or amount<\/td><\/tr><tr><td>Extension<\/td><td>Pending, window lengthened<\/td><td>The advertiser extends how long an Action can still be corrected<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Model this as an append-only ledger rather than a single mutable balance field: every Action, Concluded Action, and Correction writes a new entry rather than overwriting the last one. That&#8217;s the only version of the data model that can answer a support ticket asking why a balance changed weeks after the fact, and it&#8217;s the difference between a connect-CJ-to-cashback-website project that reconciles cleanly and one that doesn&#8217;t.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>What Does CJ Publisher Approval Require?<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">CJ publisher approval at the network level needs only that you&#8217;re 18+ with a live website, free and near-instant. Individual advertiser approval is separate per brand, ranges from same-day automated review to several weeks manual review, and inactive publishers risk deactivation after six months with no results. Our broader guide to <a href=\"https:\/\/www.enactsoft.com\/resources\/affiliate-network-approval\/\">affiliate network approval<\/a> covers what reviewers look for across networks generally, not just CJ.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Each advertiser reviews your site independently, some automatically, some manually, and can take a day to several weeks to respond.<\/li>\n\n\n\n<li>Publishers who generate no results within their first six months risk having their account deactivated by CJ.<\/li>\n\n\n\n<li>CJ&#8217;s Content Certified program pre-approves qualifying content publishers (roughly 10,000+ monthly pageviews, blog or social media as the primary distribution channel, no paid search as the primary traffic source) for automatic access to 600+ brands at premium rates, without going through individual CJ publisher approval one advertiser at a time.<\/li>\n<\/ul>\n\n\n\n<style>\n    .es-blog-cta {\n        background: linear-gradient(to right, #1f1b3e, #4a211f);\n        border-radius: 8px;\n        padding: 30px 20px;\n        text-align: center;\n        font-family: \"Inter\", system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif !important;\n        margin: 30px 0;\n        width: 100%;\n        box-sizing: border-box;\n        border: 1px solid rgba(255, 255, 255, 0.08);\n        -webkit-font-smoothing: antialiased !important;\n        -moz-osx-font-smoothing: grayscale !important;\n    }\n\n    .es-blog-title {\n        color: #ffffff !important;\n        font-size: 28px !important;\n        font-weight: 800 !important;\n        margin: 0 0 10px 0 !important;\n        line-height: 1.3 !important;\n        letter-spacing: 0.5px !important;\n    }\n\n    .es-blog-line {\n        width: 180px;\n        height: 3px;\n        background-color: #ff5722;\n        margin: 0 auto 12px auto;\n        border-radius: 50% 50% 50% 50% \/ 100% 100% 0% 0%;\n    }\n\n    .es-blog-desc {\n        color: #ffffff !important;\n        font-size: 16px !important;\n        font-weight: 500 !important;\n        line-height: 1.6 !important;\n        margin: 0 auto 20px auto !important;\n        max-width: 700px;\n        opacity: 0.95 !important;\n    }\n\n    .es-blog-features {\n        display: flex;\n        justify-content: center;\n        align-items: center;\n        flex-wrap: wrap;\n        gap: 12px 24px;\n        margin-bottom: 24px;\n    }\n\n    .es-blog-item {\n        color: #ffffff !important;\n        font-size: 14px !important;\n        font-weight: 600 !important;\n        display: flex;\n        align-items: center;\n        letter-spacing: 0.3px !important;\n    }\n\n    .es-blog-item::before {\n        content: \"\";\n        display: inline-block;\n        width: 6px;\n        height: 6px;\n        border-radius: 50%;\n        border: 2px solid #ff5722;\n        margin-right: 8px;\n    }\n\n    .es-blog-btn {\n        display: inline-block;\n        background-color: #ff5722 !important;\n        color: #ffffff !important;\n        padding: 14px 36px !important;\n        font-size: 16px !important;\n        font-weight: 700 !important;\n        text-decoration: none !important;\n        border-radius: 6px !important;\n        border: 2px solid #000000 !important;\n        box-shadow: 4px 4px 0px #000000 !important;\n        transition: all 0.1s ease;\n    }\n\n    .es-blog-btn:hover {\n        transform: translate(-2px, -2px);\n        box-shadow: 6px 6px 0px #000000 !important;\n        background-color: #ff6a3a !important;\n    }\n\n    .es-blog-btn:active {\n        transform: translate(4px, 4px);\n        box-shadow: 0px 0px 0px #000000 !important;\n    }\n\n    @media (max-width: 600px) {\n        .es-blog-cta {\n            padding: 24px 16px;\n        }\n\n        .es-blog-title {\n            font-size: 24px !important;\n        }\n\n        .es-blog-features {\n            flex-direction: column;\n            gap: 10px;\n        }\n    }\n<\/style>\n\n<div class=\"es-blog-cta\">\n    <h2 class=\"es-blog-title\">Stuck Wiring CJ Into Your Platform?<\/h2>\n\n    <div class=\"es-blog-line\"><\/div>\n\n    <p class=\"es-blog-desc\">\n        Our CJ integration services cover CJ Affiliate API setup, PID &#038; AID handling, deep link generation, and complete transaction sync, backed by a team delivering Commission Junction integrations since 2013.\n    <\/p>\n\n    <div class=\"es-blog-features\">\n        <span class=\"es-blog-item\">CJ Affiliate API Integration<\/span>\n        <span class=\"es-blog-item\">Deep Link Generation<\/span>\n        <span class=\"es-blog-item\">Transaction Sync<\/span>\n    <\/div>\n\n    <a href=\"https:\/\/www.enactsoft.com\/contact-us\/\" class=\"es-blog-btn\">Talk to Our Integration Team<\/a>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>How Do You Handle CJ Reversals and Corrections?<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">A Correction is CJ&#8217;s term for any retroactive change to a transaction you&#8217;ve already been credited for, a cancelled order, a return, or a fraud flag the advertiser applies after the fact. This is the same failure mode covered in our guide to <a href=\"https:\/\/www.enactsoft.com\/resources\/handling-disabled-or-removed-campaign-programs-from-affiliate-networks\/\">handling disabled or removed campaign programs from affiliate networks<\/a>, since a Correction and a program-level removal both leave a platform holding a balance it no longer has a claim to. If your commission junction integration pays out on an Action before it becomes a Concluded Action, a later Correction has nowhere to pull the money back from, because it&#8217;s already left your platform. The only defensible design holds the withdrawable state behind the Concluded Action status, never behind the initial Action alone.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Treat every Correction as a new ledger entry, not an edit to the original Action, this preserves an audit trail for support disputes.<\/li>\n\n\n\n<li>CJ&#8217;s data-import categories (Actions, Concluded Actions, Corrections, Extensions) are the advertiser-side vocabulary, but the same four states are exactly what you should be watching for on the publisher side too.<\/li>\n\n\n\n<li>Build a reconciliation job that periodically diffs your ledger against CJ&#8217;s own reporting, since a missed Correction is the most common source of a balance that quietly drifts from what CJ actually owes you.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>How Do You Test a CJ Integration Before Going Live?<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Before a commission junction integration touches real user balances, run it through a deliberate test pass rather than trusting the first successful sync:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Generate a link with the CJ deep link generator for at least one advertiser with deep linking enabled and one without, and confirm the disabled case correctly falls back to the homepage rather than erroring silently.<\/li>\n\n\n\n<li>Place a small real or test order through your own deep link and confirm the resulting Action appears in the API with the PID and AID you expect, not just in the CJ dashboard.<\/li>\n\n\n\n<li>Manually trigger a Correction scenario if the advertiser allows test cancellations, and confirm your ledger records a reversal rather than silently leaving the original balance untouched.<\/li>\n\n\n\n<li>Run your sync job twice against the same time window and confirm you don&#8217;t double-credit a user, CJ&#8217;s transaction IDs should be your deduplication key.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Common CJ Integration Mistakes<\/strong><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Assuming CJ&#8217;s API gives you click data, it doesn&#8217;t. Budget for a separate reporting import if EPC matters to your ops team.<\/li>\n\n\n\n<li>Hard-coding a single CJ tracking domain in your deeplink builder instead of using the domain CJ actually issues per advertiser.<\/li>\n\n\n\n<li>Applying to advertiser programs before your site has real, non-duplicated store content, CJ&#8217;s advertisers reject unfinished catalogues at a high rate.<\/li>\n\n\n\n<li>Treating a Correction as an edge case rather than a routine part of the data model, on any advertiser with a real return rate, Corrections happen constantly.<\/li>\n\n\n\n<li>Starting a commission junction integration on the identifier and deep link work before the wallet and reconciliation design is settled, the ledger model should come first.<\/li>\n\n\n\n<li>Picking CJ as your only network without comparing it against alternatives first, our <a href=\"https:\/\/www.enactsoft.com\/resources\/tips-to-choose-affiliate-tracking-software\/\">tips for choosing affiliate tracking software<\/a> covers what to weigh before committing.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>FAQ<\/strong><\/h3>\n\n\n<div id=\"rank-math-faq\" class=\"rank-math-block\">\n<div class=\"rank-math-list \">\n<div id=\"faq-question-1787566442243\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \"><strong>Does the CJ affiliate API return click data?<\/strong><\/h3>\n<div class=\"rank-math-answer \">\n\n<p>No, the CJ commission detail API, now on GraphQL, covers transactions and commissions, but not click-level statistics. It&#8217;s authenticated with a Bearer Personal Access Token from the CJ Developer Portal.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-question-1787566455085\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \"><strong>What&#8217;s the difference between CJ PID and AID?<\/strong><\/h3>\n<div class=\"rank-math-answer \">\n\n<p>PID identifies your promotional property (the website, app, or channel). AID identifies the specific link\/ad creative. Both are embedded in every tracking link CJ generates for you.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-question-1787566464845\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \"><strong>Can I use the CJ deep link generator programmatically instead of through the dashboard?<\/strong><\/h3>\n<div class=\"rank-math-answer \">\n\n<p>Yes, using the advanced link format with aid, pid, and a URL-encoded destination parameter, or through CJ&#8217;s downloadable Deep Link Generator bookmarklet for manual use.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-question-1787566476173\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \"><strong>How long does CJ publisher approval take per advertiser?<\/strong><\/h3>\n<div class=\"rank-math-answer \">\n\n<p>It varies entirely by advertiser, from same-day automated approval to several weeks for manual review. There&#8217;s no network-wide timeline.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-question-1787566489700\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \"><strong>What does a solid commission junction integration actually require day to day?<\/strong><\/h3>\n<div class=\"rank-math-answer \">\n\n<p>Correct PID and AID mapping, a ledger that treats Corrections as routine, and holding withdrawable balances behind Concluded Action status rather than the initial Action.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-question-1787566504021\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \">What does it take to connect CJ to cashback website tracking correctly?<\/h3>\n<div class=\"rank-math-answer \">\n\n<p>A ledger structure that treats Actions, Concluded Actions and Corrections as separate events, with withdrawable balances gated behind Concluded Action status rather than the initial Action.<\/p>\n\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong>EnactSoft Engineering<\/strong>We&#8217;ve built and maintained affiliate network integrations across cashback and coupon platforms since 2013.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Conclusion<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">CJ is straightforward once you internalize that PID and AID are doing different jobs, that CJ&#8217;s API only tells you half the story, and that Corrections are a routine part of the data model rather than an exception to handle later. Get the identifier mapping right, model the ledger around Actions and Concluded Actions rather than a single balance field, and test the reversal path before you trust the integration with real money. If you&#8217;d rather not untangle any of this yourself, <a href=\"https:\/\/www.enactsoft.com\/contact-us\/\">talk to our integration team<\/a>. Our CJ integration services exist precisely for this, and we can take it from here.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Commission Junction, now simply &#8220;CJ&#8221;, is one of the oldest affiliate networks still running, and one of the least forgiving if you get the identifiers wrong. A commission junction integration lives or dies on four small pieces of data: PID, AID, CID and SID. Get those wrong and every commission that comes back through CJ&#8217;s [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":5945,"template":"","meta":{"footnotes":""},"doc_category":[68],"glossaries":[],"doc_tag":[],"class_list":["post-5889","docs","type-docs","status-publish","has-post-thumbnail","hentry","doc_category-cashback-website-tools"],"year_month":"2026-09","word_count":2667,"total_views":"12","reactions":{"happy":"0","normal":"0","sad":"0"},"author_info":{"author_nicename":"sdjsuhds","author_url":"https:\/\/www.enactsoft.com\/resources\/author\/sdjsuhds\/"},"doc_category_info":[{"term_name":"Affiliate Business Tools","term_url":"https:\/\/www.enactsoft.com\/resources\/docs-category\/cashback-website-tools\/"}],"doc_tag_info":[],"author_list":[{"ID":"2","user_login":"sdjsuhds","display_name":"sdjsuhds","id":"2"}],"_links":{"self":[{"href":"https:\/\/www.enactsoft.com\/resources\/wp-json\/wp\/v2\/docs\/5889","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.enactsoft.com\/resources\/wp-json\/wp\/v2\/docs"}],"about":[{"href":"https:\/\/www.enactsoft.com\/resources\/wp-json\/wp\/v2\/types\/docs"}],"author":[{"embeddable":true,"href":"https:\/\/www.enactsoft.com\/resources\/wp-json\/wp\/v2\/users\/2"}],"version-history":[{"count":3,"href":"https:\/\/www.enactsoft.com\/resources\/wp-json\/wp\/v2\/docs\/5889\/revisions"}],"predecessor-version":[{"id":5963,"href":"https:\/\/www.enactsoft.com\/resources\/wp-json\/wp\/v2\/docs\/5889\/revisions\/5963"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.enactsoft.com\/resources\/wp-json\/wp\/v2\/media\/5945"}],"wp:attachment":[{"href":"https:\/\/www.enactsoft.com\/resources\/wp-json\/wp\/v2\/media?parent=5889"}],"wp:term":[{"taxonomy":"doc_category","embeddable":true,"href":"https:\/\/www.enactsoft.com\/resources\/wp-json\/wp\/v2\/doc_category?post=5889"},{"taxonomy":"glossaries","embeddable":true,"href":"https:\/\/www.enactsoft.com\/resources\/wp-json\/wp\/v2\/glossaries?post=5889"},{"taxonomy":"doc_tag","embeddable":true,"href":"https:\/\/www.enactsoft.com\/resources\/wp-json\/wp\/v2\/doc_tag?post=5889"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}