Zapier

Start Zaps from referrals, commissions and payouts, and create partners, links and conversions from any app, using REST hooks and your own API key.

Embed
Preview of the card
<a href="https://referalli.com/docs/zapier"><img src="https://referalli.com/docs/_api/public/orgs/07f432f4-34b9-46a7-aaad-c0e395d2e4f9/spaces/2bf4f614-3630-4fbf-85f9-5ecafa6b7d97/pages/3fd14ce6-8902-4b5a-bcc9-5c7cf9ce2b0e/social-card.svg?v=3e7ae33eec8b" alt="Zapier" width="600" height="315"></a>

The Referalli app for Zapier connects with your own API key. Its triggers are instant: when a Zap turns on, Zapier subscribes a REST hook, and Referalli sends each event to it as it happens.

Connect

  1. In Referalli, open Settings → API keys and create a key. A full key works, or a custom key with the scopes your Zaps use (integrations:write to subscribe triggers, plus partners:write, links:write, billing:write or referrals:write for the actions).

  2. In Zapier, add the Referalli app and paste the key. If your Referalli runs on your own domain, enter it as Referalli URL.

Zapier checks the key with GET /v1/me, which answers for an API key with the key and its org:

{ "user": null, "memberships": [], "apiKey": { "id": "key_…", "name": "Zapier", "scopes": ["full"] }, "org": { "id": "org_…", "name": "Acme" } }

Triggers

Trigger

Event

New Referral

referral.created

Commission Earned / Reversed

commission.earned, commission.reversed

Commission Settled as Credit

commission.settled

Payout Sent / Failed

payout.sent, payout.failed

Partner Applied / Enrolled / Approved

partner.applied, partner.enrolled, partner.approved

Deal Registered

deal.submitted

Fraud Case Opened

fraud.case_opened

Each event arrives as one flat item: the event's fields (the same as in webhooks), plus id (the event id), event and createdAt.

{ "id": "evt_01J…", "event": "referral.created", "createdAt": "2026-10-22T12:00:00.000Z",
  "referralId": "ref_01J…", "programId": "prg_01J…", "partnerId": "ptr_01J…", "customerRef": "cus_123", "matchedVia": "coupon", "status": "active" }

Actions and searches

Action

What it calls

Create or Update Partner

POST /v1/partners with upsert: true, so the same email or external id returns the existing partner

Create Tracked Link

POST /v1/links

Record Conversion

POST /v1/zapier/conversions (below)

Attribute Signup

POST /v1/referrals/associate

Find Partner

GET /v1/partners?email=… or ?externalRef=…

The REST-hook API

You don't call these yourself; the Zapier app does. They're documented for other automation tools.

Call

Body

Response

POST /v1/zapier/hooks

{ "target_url": "https://…", "event": "referral.created" }

{ id, event, target_url, createdAt }. The same target_url again updates its event.

DELETE /v1/zapier/hooks/{id}

none

{ ok: true }

GET /v1/zapier/hooks

none

The subscribed hooks.

GET /v1/zapier/triggers/{event}?limit=25

none

The latest events of that kind, newest first, in the delivery shape. Always a plain array.

GET /v1/zapier/events

none

The event names a hook can subscribe to.

Each delivery is a POST of one item to target_url. A 2xx answer means delivered. A 410 Gone unsubscribes the hook, which is what Zapier answers once a Zap is off. Any other failure is retried with exponential backoff (30 seconds, doubling, at most 6 hours between tries) for 3 days. Settings → Integrations lists recent deliveries, and failed ones can be retried there.

Record a conversion

POST /v1/zapier/conversions reports a payment, or a refund, through your generic billing connection, so the partner who referred the customer earns their commission. No signature is needed, because the API key authenticates it.

{ "providerEventId": "pay_123", "customerRef": "cus_123", "amountMinor": 4900, "currency": "usd", "type": "invoice_paid" }

Field

Required

Meaning

providerEventId

yes

Unique per payment. Resending the same id returns duplicate: true and changes nothing.

customerRef

yes

The id you attributed the customer under at signup.

amountMinor

yes

Integer minor units: 4900 means $49.00. The Zapier action converts "49.00" for you.

currency

no

Defaults to usd.

type

no

invoice_paid (default) or refund.

invoiceRef, occurredAt

no

occurredAt defaults to now.

connectionId

no

A specific generic connection. Defaults to the org's first active one.

Create the generic connection once, with POST /v1/billing/connections {"provider": "generic", "name": "Zapier"}. Without one, the call returns 400 create a generic billing connection first.

Updated