An active affiliate is a joined partner who performed a named action within a named period. For a creator program, use publishing-active to mean at least one evidenced affiliate promotion during the reporting month. Report click-active and selling-active separately. Keep everyone who joined in the cohort denominator, including partners with no recorded activity. This makes the active affiliate rate useful without making dormant signups disappear.
Modash's guide to scaling an affiliate program raises the gap between recruited affiliates and affiliates who publish. Your report needs a definition narrow enough that two people can reproduce its count.
Five definitions to put in the report
These are recommended reporting definitions. They are not universal affiliate-platform statuses. Use a stable affiliate ID so one partner with several accounts, links or posts counts once per measure.
| Measure | Counting rule | What it tells you | Main limitation |
|---|---|---|---|
| Joined | Accepted program membership by the cohort cutoff | Size of the recruited group | Acceptance shows no promotional activity |
| Link-created | Has a recorded affiliate link by the reporting cutoff | Tracking setup has reached this step | An automatically created link proves no creator action |
| Published | Has at least one evidenced affiliate promotion published during the activity window | Recent promotional work | Older content can keep selling without a new post |
| Clicked | Has at least one recorded qualifying click during the activity window | Observed traffic activity | Test traffic and measurement gaps can mislead |
| Selling | Has at least one attributed qualifying order placed during the activity window | Recorded commercial activity | Attribution and returns can change the count |
For joined, record when the creator accepted your program, rather than the date you sent an invitation. Keep pending applicants in a separate recruitment count.
Link-created is a setup milestone. Store the creation timestamp, link owner and delivery status. Report first-link completion by cohort age if you want to compare onboarding. Do not require established affiliates to create a fresh link every month to remain active. Code-only partners need a separate code-ready flag; an absent link does not prove their setup is incomplete.
For published, retain a URL, publication date and evidence such as a saved post record or creator submission. Mark missing evidence as unknown. A creator saying they posted is a follow-up task until your chosen evidence requirement is met.
For clicked, write down the system and exclusions. Exclude identifiable staff tests and known automated traffic when the system supports it. If your platform exposes visits, name the measure visit-active. Shopify Collabs labels individual creator traffic as Visits; its documentation does not make that label interchangeable with raw clicks.
For selling, specify whether you mean orders placed, retained orders as of a cutoff, or orders approved for commission. Those definitions answer different questions. A payout date should not silently replace an order date.
Freeze the population before counting activity
Use two views alongside each other:
- Fixed join cohort. Partners who joined during a specified period, followed over time. Keep departures and paused partners in this historical group, with status flags.
- Current roster. Partners eligible to participate at the start of the reporting window. Show joins, pauses and exits separately so roster changes remain visible.
State the denominator in the metric name or its adjacent note. A fixed-cohort rate and a current-roster rate cannot be compared without checking who each includes.
Use calendar dates and one timezone. Shopify's performance view defaults to the last 30 days, according to its creator-management documentation. Set a common range before combining its results with publication records.
For onboarding comparisons, measure each cohort after the same elapsed time, such as its first 30 days after joining. Mark newer cohorts as incomplete until that period ends. For monthly operations, show partial-month newcomers separately from the established roster.
A hypothetical cohort with visible dormant members
The following example is invented to demonstrate the calculation. All ten partners joined in July 2026 and remained eligible throughout August. The activity window is August 1 at 00:00 through September 1 at 00:00 UTC, excluding the endpoint. Order outcomes reflect records available on September 25.
Assume complete publication evidence and functioning click tracking. Each affiliate has one ID. Link setup is cumulative through August 31; the other activity columns cover August only.
| Affiliate | Link created by cutoff | New promotion | Qualifying click | Retained orders |
|---|---|---|---|---|
| A | Yes | Yes | Yes | 2 |
| B | Yes | Yes | Yes | 1 |
| C | Yes | Yes | Yes | 0 |
| D | Yes | Yes | No | 0 |
| E | Yes | Yes | No | 0 |
| F | Yes | No | Yes | 1 |
| G | Yes | No | No | 0 |
| H | Yes | No | No | 0 |
| I | No | No | No | 0 |
| J | No | No | No | 0 |
Here is the complete hypothetical order ledger behind the last column. Each order has one credited affiliate. For this example, a retained order has positive merchandise value after refunds and is neither canceled nor rejected as invalid. All amounts are USD; tax and shipping are excluded.
| Order | Affiliate | Placed | Merchandise | Refunded by cutoff | Counts? |
|---|---|---|---|---|---|
| 101 | A | August 3 | $80 | $0 | Yes |
| 102 | B | August 9 | $60 | $0 | Yes |
| 103 | A | August 18 | $40 | $0 | Yes |
| 104 | C | August 22 | $90 | $90 | No |
| 105 | F | August 28 | $50 | $0 | Yes |
The formula is:
Active rate = distinct cohort affiliates meeting the named rule / all affiliates in that cohort × 100
| Hypothetical measure | Calculation | Rate |
|---|---|---|
| Link-created coverage | 8 / 10 × 100 | 80.0% |
| Publishing-active rate | 5 / 10 × 100 | 50.0% |
| Click-active rate | 4 / 10 × 100 | 40.0% |
| Selling-active rate, retained orders | 3 / 10 × 100 | 30.0% |
| No publication, click or retained order | 4 / 10 × 100 | 40.0% |
Rates round to one decimal place. A's two orders count as one selling affiliate. Before C's refund, the placed-order definition would count four sellers and produce 40.0%. The retained-order definition produces 30.0% at the stated cutoff.
Shopify's payment documentation says canceled and fully refunded orders lose their commissions during the holding period. That is one reason to preserve order status and extraction date. The hypothetical retained-order rule above does not determine a platform's commission approval or payout. Use a separate returns reconciliation process for those amounts.
F's older content generated August traffic and an order. These columns therefore overlap without forming a mandatory sequence. Codes can also attribute orders independently of a newly observed click. Define how links and discount codes share credit before you count selling affiliates.
Turn each gap into a different task
Do not call all five non-publishers dormant. In the example, F still generated traffic and sales. G, H, I and J had none of the three observed activity types during August.
Use the records to assign work:
- Joined without setup: check access, link delivery and whether a code-only arrangement is intended.
- Setup without observed activity: ask about readiness, timing and interest before sending another promotion request.
- Published without traffic: inspect the destination and measurement before judging the creator's audience.
- Traffic without retained sales: review attributed orders, returns and the purchase path.
- Selling without fresh content: check the older placement before assuming the relationship needs reactivation.
A missing disclosure needs its own status. For endorsements affecting U.S. consumers, FTC guidance calls for disclosure of financial brand relationships with the endorsement. Keep the publication in the activity count and flag the disclosure problem for correction. Removing it from the records would conceal work that needs attention.
Before the next monthly review, choose your activity window and freeze the cohort list. Fill these five columns, retain unknowns, and give each inactive partner a reason code. Then use a respectful reactivation process for the partners whose records support that next step.



