Zapier
Connect Rekomi to 8,000+ apps with no code. 9 triggers, 9 actions, 4 searches.
The Rekomi Zapier integration wires your affiliate program into Slack, Gmail, HubSpot, Notion, Google Sheets, Airtable, Discord, Mailchimp, Typeform, and every other Zapier app. Build no-code automations that notify your team when an affiliate signs up, sync conversions to a sales CRM, post big payouts to a Slack channel, auto-add new partners to an email list, or approve vetted applicants the moment they submit a survey.
The Rekomi app is live in the Zapier marketplace: view Rekomi on Zapier. Signed-in brands can also build a Zap without leaving the dashboard at Integrations → Zapier, with your details prefilled so you skip the Zapier signup.
Plan tier required: Starter and above. Connecting the Rekomi app to Zapier itself is free; the actions and triggers run against your Rekomi account, which needs to be on Starter+ to receive REST-hook subscriptions or accept programmatic writes. Free-tier accounts receive a clean 402 plan_tier_required response and Zapier surfaces it as a readable error.
Connect Rekomi in Zapier
The Rekomi app is published in the Zapier marketplace under the name Rekomi. Connection is OAuth 2.0 with PKCE, no API keys, no copy-paste, no shared credentials. Connections are per-Zapier-account: every teammate who builds Zaps in your shared Zapier workspace connects their own Rekomi user, so audit trails stay clean.
- In Zapier, open the Zap editor and add a Rekomi trigger or action. When prompted for an account, click Connect a new account.
- A new tab opens at
app.rekomi.com/oauth/authorize. Sign in if you are not already signed in. Pick the organization you want Zapier to act on (the dropdown shows every org you belong to). - The consent screen lists the app name (Rekomi for Zapier), the requested scope (
read_write offline_access), and your active org. Click Allow. - The window closes automatically and Zapier shows your org name as the connected account. The connection is reused across every Zap you build with the same Zapier login.
The consent screen always reflects the scopes Zapier requested at authorize time and the org you picked. If you ever need to reauthorize, for example after revoking from the Rekomi dashboard, or when switching the connection to a different org, open app.rekomi.com/dashboard/settings/connected-apps, revoke the Zapier connection, then go back to Zapier → My Apps → Rekomi → Reconnect.
Under the hood Zapier uses standards-compliant OAuth 2.0 Authorization Code + PKCE (S256). The token endpoint is https://api.rekomi.com/connect/token, refresh tokens rotate on every use, and reusing an old refresh token revokes the entire token family. See OAuth 2.0 for the full protocol details.
Triggers
Triggers fire when something happens inside Rekomi and start a Zap. Rekomi triggers are implemented as REST hooks: when you turn a Zap on, Zapier subscribes a webhook endpoint against your org; when you turn it off, Zapier unsubscribes cleanly. There is no polling and no missed events for as long as the Zap is on.
| Trigger | Fires when | Source event | Sample output fields |
|---|---|---|---|
| New Conversion | An affiliate-attributed sale is recorded | conversion.created | conversionId, affiliateId, programId, amountCents, currency, commissionCents, status |
| Conversion Refunded | A previously approved conversion is clawed back | conversion.refunded | conversionId, affiliateId, refundedAmountCents, commissionReversedCents, currency, refundedAt |
| New Affiliate Application | Someone applies to one of your campaigns | affiliate.created | affiliateId, programId, email, fullName, status, slug |
| Affiliate Approved | An affiliate application is approved | affiliate.approved | affiliateId, programId, email, fullName, approvedAt |
| Payout Created | A payout batch is queued for processing | payout.created | payoutId, affiliateId, amountCents, currency, method, status, periodStart, periodEnd |
| Payout Paid | A payout batch is paid out | payout.paid | payoutId, affiliateId, amountCents, currency, method, paidAt, stripeTransferId |
| Payout Failed | A payout batch fails (insufficient funds, missing Connect account, transfer rejected) | payout.failed | payoutId, affiliateId, amountCents, currency, method, failureReason, failedAt |
| New Campaign Coupon | A campaign-level coupon is created | campaign_coupon.created | campaignCouponId, programId, name, discountType, discountValue, duration, createdAt |
| New Affiliate Coupon | A per-affiliate redeemable code is minted | affiliate_coupon.created | affiliateCouponId, campaignCouponId, affiliateId, programId, code, createdAt, source |
Editor-only filters. The New Campaign Coupon and New Affiliate Coupon triggers expose optional Campaign and Affiliate dropdowns inside the Zap editor. Those dropdowns are there so you can fetch realistic sample data when you're building the Zap, once the Zap is live, the trigger fires for every matching event in your org regardless of the dropdown selection. Filter live runs with a regular Zapier Filter step if you need to scope down.
Full event payload shapes (the JSON Rekomi actually emits) are in the Webhooks doc. Zapier surfaces those fields one-for-one in the editor's data picker.
Actions
Actions perform writes on your Rekomi account from another Zapier app, typically as the second step of a Zap whose trigger is some other product.
| Action | What it does | Required inputs | Returns |
|---|---|---|---|
| Create Campaign | Create a new affiliate program (name, slug, commission rules) | Name, slug, commission type, commission value | The new program with its id, slug, and createdAt |
| Invite Affiliate | Send a single branded invite email | Program, email | The invite row plus the one-time acceptUrl |
| Bulk Invite Affiliates | Send up to 50 invites in one call | Program, list of emails (optionally with per-row slug + full name) | created, skipped, and an array of invites plus any slugConflicts |
| Approve Affiliate | Approve a pending affiliate application | Affiliate | The updated affiliate row (status now Approved) |
| Reject Affiliate | Reject a pending affiliate with optional reason | Affiliate, optional reason | The updated affiliate row (status now Rejected) |
| Create Campaign Coupon | Create a campaign-level coupon parent | Program, name, discount type, discount value, duration | The new campaign coupon with campaignCouponId |
| Generate Affiliate Coupon | Mint a per-affiliate redeemable code under a campaign coupon | Affiliate, campaign coupon, optional custom code | The new affiliate coupon with code and affiliateCouponId |
| Revoke Affiliate Coupon | Deactivate an affiliate's redeemable code | Affiliate coupon | { ok: true } plus the deactivated row |
| Mint Embed Token | Issue a short-lived white-label dashboard embed token | Affiliate, allowed origins, optional expiresInHours | The plaintext token (shown once), allowedOrigins, expiresAt |
Plan callouts.
- Bulk Invite Affiliates requires a paid subscription. Trial users see a clean
412 paid_plan_required(the bulk-email abuse path does not get a trial pass) and Zapier displays it as "This action requires an active paid subscription." - Mint Embed Token is part of the Embed white-label feature and requires the Growth tier or above. Lower tiers get
402 plan_tier_required. - Generate Affiliate Coupon, Revoke Affiliate Coupon, and Create Campaign Coupon all create or modify Stripe Coupons / Promotion Codes under the hood when your org has Stripe Connect linked. The Rekomi row and the Stripe row are kept in sync inside a single transaction, if Stripe rejects the create, the Rekomi row is rolled back.
Searches
Searches are read-only lookups. They are typically used inside a Zap with a "Find or Create" toggle, or as a way to resolve a piece of data into a Rekomi id you can hand to a later step.
| Search | Input | Returns |
|---|---|---|
| Find Affiliate by Email | Email address | The matching affiliate (or empty if not found) |
| Find Campaign by Name or Slug | Free-text query against name or slug | The matching campaign (or empty if not found) |
| Get Affiliate by ID | Affiliate UUID | The affiliate (or 404) |
| Get Campaign by ID | Campaign UUID | The campaign (or 404) |
Every search exposes the standard Zapier search controls:
- "Successful if no results", when checked, an empty result counts as success and the Zap continues. Useful when paired with a downstream "Create if not found" branch.
- "Return first match" / "Return all matches", choose whether the Zap operates on the single best match or fans out across every match. The fan-out shape is one Zap run per match.
Recipes
Six worked examples to copy. Each one is a single Zap; the optional Filter or Formatter step is standard Zapier glue, not Rekomi-specific.
1. Notify Slack when a high-ticket conversion lands
You want a Slack ping in #sales every time an affiliate-attributed sale crosses $500, but not for every small purchase.
- Trigger: Rekomi → New Conversion.
- Filter: Only continue if
amountCentsis greater than 50000. - Action: Slack → Send Channel Message to
#saleswith the affiliate id, amount, and commission.
2. Auto-tag approved affiliates in Mailchimp
When you approve a new affiliate, you want them in a Mailchimp audience with a partner tag so they get your partner-onboarding sequence automatically.
- Trigger: Rekomi → Affiliate Approved.
- Action: Mailchimp → Add/Update Subscriber. Map
emailandfullName, set thepartnertag.
3. Urgent email when a payout fails
Payout failures usually mean an affiliate hasn't finished Stripe Connect onboarding or their Connect account is restricted. You want an immediate finance-team alert.
- Trigger: Rekomi → Payout Failed.
- Action: Gmail → Send Email to
finance@yourbrand.comwith the affiliate id,failureReason, and a link to the affiliate's row in the dashboard.
4. Sync conversions to a Google Sheets revenue log
Finance wants every Rekomi conversion in a Google Sheet for monthly reconciliation against Stripe.
- Trigger: Rekomi → New Conversion.
- Action: Google Sheets → Create Spreadsheet Row. Map
conversionId,affiliateId,amountCents,currency,commissionCents,createdAt.
5. Close the loop on refunds in HubSpot
When a conversion is refunded, you want the related HubSpot deal moved back to a Closed Lost, refunded stage so reps don't keep nurturing it.
- Trigger: Rekomi → Conversion Refunded.
- Action: HubSpot → Update Deal. Use the
externalEventIdfrom the conversion (your own Stripe invoice id) to look up the deal, then patch the deal stage.
6. Approve net-new applicants from a Typeform vetting survey
You ask prospective partners to fill out a Typeform with a self-scored fit rubric. Anyone who scores 8 or above should be auto-approved; lower scores stay pending for manual review.
- Trigger: Typeform → New Entry.
- Filter: Only continue if the
scorefield is greater than or equal to 8. - Action: Rekomi → Approve Affiliate. Pass the affiliate id from the Typeform's hidden-field response.
Errors and recovery
Rekomi's middleware unpacks every backend error into a readable Zapier message. The most common ones:
| Error | Meaning | What to do |
|---|---|---|
RefreshAuthError (401) | Your OAuth token has been revoked, the family was rotated out, or the connection was removed from the dashboard. | Reconnect from Zapier → My Apps → Rekomi → Reconnect. The Zap resumes on the next trigger event. |
402 plan_tier_required | The action you tried requires a higher plan tier, most commonly Mint Embed Token on a Starter org. | Upgrade in app.rekomi.com/dashboard/settings/billing, or drop that action from the Zap. The error body includes required and current plan tiers. |
412 paid_plan_required | Bulk Invite Affiliates was called from a Trial or unsubscribed account. | Activate a paid subscription. Bulk-email actions have no Trial pass to prevent abuse. |
429 rate_limited | You burst past Rekomi's per-token rate limit. | Zapier retries automatically with backoff. No action needed unless the burst is sustained. |
400 validation_failed with field | A specific input failed validation. The Zapier message reads Field: message, for example slug: slug_already_taken. | Fix the offending input in the Zap step's config. For Create Campaign, the dashboard form auto-suggests an available slug via a debounced check-slug endpoint, but the Zapier action surfaces the conflict as a clean error, pick a different slug and re-run. |
5xx server_error | Transient Rekomi-side issue. | Zapier retries automatically. If a Zap is consistently red on 5xx, contact support. |
You can inspect every failed run in Zapier's Zap History with the full request and response, and you can replay any failed run after fixing the root cause.
Plan tier
The Rekomi app in Zapier requires Starter+ for general use. Two actions have higher gates:
- Bulk Invite Affiliates, paid subscription required (Starter+ with
SubscriptionStatus = Active; Trial users blocked). - Mint Embed Token, Growth+ required (matches the Embed feature gate).
All other triggers, actions, and searches work on every Starter+ org including Trial. See the broader API reference for the full plan-tier table.
Security
- OAuth reference tokens. Zapier holds opaque reference tokens (not JWTs). They are stored encrypted server-side on Rekomi and can be revoked at any moment from
app.rekomi.com/dashboard/settings/connected-apps. Revocation takes effect on the next API call, Zapier will surface aRefreshAuthErrorand prompt the user to reconnect. - PKCE-protected authorize. Authorization Code + PKCE (S256) is mandatory for the Zapier client. Authorization codes expire in 60 seconds and are single-use.
- Refresh rotation with family revocation. Refresh tokens rotate on every use; reusing an old one revokes every token in the family (per OAuth 2.0 Security BCP). Active Zaps refreshing within the rolling 30-day window effectively never need user reauthorization.
- HMAC-signed webhook delivery. Every payload Rekomi sends to Zapier's catch URL is HMAC-SHA256 signed and tagged with
X-Rekomi-Signature: t=<unix>,v1=<hex>. Zapier handles verification on its side; you don't need to do anything. - Audit log on everything. Every consent grant, token issuance, refresh, revocation, and detected token reuse writes an audit row visible under
/dashboard/settings/audit-log(actions prefixedoauth.*). Every Zapier-initiated write also writes an audit row withactorType = api_key/ source User-Agent identifying the Zap. - Per-org isolation. Tokens are bound to the org you picked at consent time and cannot read or write a different org, even if your Clerk user belongs to both.
See also
- OAuth 2.0, protocol details for the Zapier connection (authorize URL, token URL, scopes, refresh rotation, revocation).
- Webhooks, the underlying event shapes that drive every Rekomi trigger. Zapier consumes this surface via REST-hook subscriptions.
- API reference, the raw REST equivalents for everything Zapier actions perform under the hood, useful when you need to do something Zapier doesn't expose.
- MCP server, the AI-assistant counterpart to Zapier: same Rekomi surface, different consumer model.
- Connect Stripe, the brand-side integration story Zapier slots into alongside Stripe Connect.
- Manage connections at app.rekomi.com/dashboard/settings/connected-apps.