Skip to content

Zapier & Make.com

The Genius Checkout Zapier and Make.com apps both talk to the same three REST-hook endpoints. They use the standard Bearer API key — no separate OAuth flow — and emit the same webhook payload shapes documented in Webhooks.

You can also call these endpoints directly from any system that supports the REST-hook pattern (Zapier, Make, Pipedream, n8n, custom integration code).

How Zapier / Make consume the endpoints

A REST-hook trigger has three parts:

  1. Subscribe — Zapier POSTs the buyer's target URL when the Zap turns on.
  2. Receive events — Genius Checkout pushes signed webhooks to that URL as events happen.
  3. Unsubscribe — Zapier DELETEs the subscription when the Zap is turned off or deleted.

For initial setup, Zapier shows a "Test trigger" UI that pulls a sample payload from /zapier/sample-payments so the user can map fields without needing a real transaction. Make.com's "Watch events" module works the same way.

Subscribe

http
POST /api/v1/zapier/subscriptions
FieldTypeRequiredDescription
target_urlstringYesHTTPS URL Zapier / Make supply. We push events here.
eventstringYesSingle event to subscribe to. See list below.

Supported events

EventFires whenCommon Zap pattern
payment.createdA checkout session is initiatedNotify the rep the buyer reached the payment page
payment.completedA payment captures successfullyPost a Slack message, append a Sheets row, create a CRM contact
payment.failedA payment is declined or failsPage the on-call team; auto-email the buyer with a retry link
payment.refundedA refund is issued (full or partial)Update accounting; mark the order refunded in the CRM
subscription.createdA new recurring subscription is set upAdd the subscriber to a drip campaign
subscription.chargedA subscription renewal succeeds (a.k.a. "payment succeeded")Send a thank-you email; update revenue dashboard
subscription.charge_failedA renewal attempt fails (a.k.a. "payment failed")Alert the merchant; mark the subscriber past-due in CRM
subscription.cancelledA subscription is cancelledSend a win-back email; remove the user from premium tier
checkout_session.completedA hosted checkout session is marked completeCapture funnel-completion data

Response (201)

json
{
  "id": "whe_zap_abcdef123456",
  "event": "payment.completed",
  "target_url": "https://hooks.zapier.com/hooks/catch/123/abc/"
}

The id is the subscription handle Zapier / Make stores and presents to the unsubscribe endpoint when the Zap is turned off. Internally we model each subscription as a first-class GC webhook endpoint, so merchants can also see the wiring on their Dashboard → Webhooks page.

Unsubscribe

http
DELETE /api/v1/zapier/subscriptions/{id}

Returns { "ok": true } on success. 404 if the subscription doesn't exist for the authenticated merchant.

Sample payments (for the "Test trigger" UX)

http
GET /api/v1/zapier/sample-payments

Returns up to 3 recent payments for the authenticated merchant, in the same shape as the real webhook payload (id, receipt_number, amount, currency, status, card_brand, card_last4, mode, created_at, metadata).

If the merchant has no transactions yet, we return a single synthetic sample so the Zap-builder UX never stalls on a brand-new account.

bash
curl -H "Authorization: Bearer $GC_API_KEY" \
  https://app.geniuscheckout.com/api/v1/zapier/sample-payments

Putting it together

js
// Node — subscribe Zapier to payment.completed events
const sub = await fetch('https://app.geniuscheckout.com/api/v1/zapier/subscriptions', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.GC_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    target_url: 'https://hooks.zapier.com/hooks/catch/123/abc/',
    event: 'payment.completed',
  }),
}).then(r => r.json())

// Later, when the Zap is turned off:
await fetch(`https://app.geniuscheckout.com/api/v1/zapier/subscriptions/${sub.id}`, {
  method: 'DELETE',
  headers: { Authorization: `Bearer ${process.env.GC_API_KEY}` },
})

Webhook payload + signing

Events delivered to the Zapier / Make target URL use the standard GC webhook envelope and HMAC-SHA256 signature. See Webhooks → Signature Verification. Zapier's and Make.com's request inspectors expose the X-GC-Signature and X-GC-Timestamp headers if you need to debug a delivery.

What's in the payload (v3)

Every payment.completed / payment.failed / payment.refunded event ships the same enriched shape so your Zap can branch on any of these fields:

FieldExampleWhy it matters in a Zap
modelive or testFilter out sandbox traffic from production reports
sourcepayment_link, hosted_checkout, api, woocommerce, give, highlevel, wix, ecwid"Only Slack me on payment_link payments"
origin_domainmystore.myshopify.comBranch by which storefront sent the payment
order_idcs_… (our session id)Cross-reference with checkout_session.completed events
gateway.name / gateway.slugPowerTranz Direct / powertranz_direct"Skip the Zap when the payment came through mpgs_hosted"
payment_link.id / payment_link.title / payment_link.slug / payment_link.urlpl_abc, VIP Onboarding, vip-onboarding, https://app.geniuscheckout.com/pay/vip-onboardingBranch per-link: "Only fire for the VIP-Onboarding link"
payment_method.type / payment_method.card_brand / payment_method.card_last4card / visa / 4242Display "card ending 4242" in the downstream message
customer.id / name / email / phonecust_…, Alex Johnson, [email protected], +1…Pipe into CRM / mailing list
custom_field_responses[][{id, label, type, value}, ...]Map per-form-field values into downstream tools. Fields flagged pii: true carry value: "<redacted>" — design intent.
metadata{ crm_deal_id: …, … }Anything you attached at session creation; survives end-to-end
card_brand / card_last4visa / 4242Same data, flat (kept for back-compat with existing integrations)
created_at2026-06-05T17:32:14+00:00When the transaction was captured
receipt_numberGC-001234Human-friendly reference for downstream emails

The gateway and payment_link blocks are null when not applicable (e.g. payments via direct API don't have a payment_link).

Same enriched shape is also what /api/v1/zapier/sample-payments returns, so Zapier's field-mapper UX exposes every field above when you build a Zap.

Actions (Zaps that do things in Genius Checkout)

In addition to triggers (above), Zapier Zaps and Make scenarios can take actions on your Genius Checkout account. All actions use the same Bearer API key and the same /api/v1 endpoints documented elsewhere in these docs.

http
POST /api/v1/payment-links
Authorization: Bearer gc_live_…
Content-Type: application/json

{
  "title": "Invoice INV-1042",
  "amount_type": "fixed",
  "fixed_amount": 12500,
  "currency": "USD",
  "max_payments": 1,
  "expires_at": "2026-07-01T23:59:59Z",
  "metadata": { "crm_deal_id": "DEAL_98213" }
}

Returns the full payment link including the public url. Common Zap pattern: "When a HubSpot deal hits Negotiation, create a payment link and Slack-message the rep."

Every field that's editable in the merchant portal is settable here — subscription_* fields for recurring links, custom_fields for buyer-data capture, branding_overrides, etc. See Payment Links API for the full schema.

Refund a transaction

http
POST /api/v1/payments/{payment_id}/refund
Authorization: Bearer gc_live_…
Content-Type: application/json

{
  "amount": 5000,
  "reason": "Customer requested partial refund"
}

Omit amount for a full refund. Returns the refund record. Common Zap pattern: "When a Zendesk ticket is tagged refund-approved, refund the linked GC transaction."

Look up a transaction

http
GET /api/v1/payments/{payment_id}
Authorization: Bearer gc_live_…

Returns the full transaction (status, amount, card brand+last4, customer, custom-field responses, gateway, refund history). Useful as a Zap step that pulls fresh data before deciding what to do next — e.g. "Every morning, check the status of yesterday's borderline transactions and post a digest to Slack."

Next

  • Webhooks — payload shape, signature header, replay window
  • Rate Limits — Zapier subscribe/unsubscribe falls under the writes tier
  • Payment Links API — the full create-link schema for the "Create payment link" Zap action

Released under the proprietary Genius Checkout license.