Skip to content
Integration

Send won deals and leads to RankUpside by webhook

Any CRM, call tracker or automation tool that can post JSON can send data to RankUpside. Won deals go to the revenue webhook and calls or form leads go to the lead webhook. Each client site has its own key, sent as a bearer token. One request can carry up to 500 items, and bad items return their own error.

What it doesn't do: The webhook only receives. It doesn't pull from your CRM or write anything back to it.

Updated

The revenue webhook.

Won deals go to POST /api/hooks/revenue with the client site's key as a bearer token. Send one deal as an object or up to 500 as an array. Webhook

POST /api/hooks/revenue
Authorization: Bearer rk_••••••••

{
  "id": "D-1042",
  "date": "2026-10-14",
  "landing_page": "https://copperlinegutters.example/",
  "amount": 4200,
  "status": "won",
  "source": "organic"
}
One key per client site. Send one deal or a list of up to 500. The deal above is a sample.
{ "ok": true, "inserted": 1, "updated": 0, "errors": [] }
ok is false when any item has an error; errors names each one.
Revenue webhook fields, the other names accepted and the defaults
FieldAlso acceptedIf missing
idexternal_idA stable id from the deal's contents
date–Today
amountvalueRejected: amount is required
landing_pagelandingPage, urlListed as unmatched
statuswon, open or lostWon
source–Counted and flagged
phone, email–Optional, for matching calls and leads
Dates read like the CSV importer: 2026-10-14, 10/14/2026 or Oct 14, 2026.
Start free trialStarts with one read-only Google sign-in. No card.

The lead webhook.

Calls and form leads go to POST /api/hooks/leads?provider=… with the same key. The provider tells the parser which shape to read: callrail, whatconverts, generic or quo.

POST /api/hooks/leads?provider=generic
Authorization: Bearer rk_••••••••

{
  "id": "CALL-3391",
  "date": "2026-10-09T15:42:00Z",
  "type": "call",
  "landing_page": "https://copperlinegutters.example/services/gutter-repair",
  "source": "google / organic",
  "duration": 157,
  "phone": "+1 202-555-0142"
}
A sample call on a reserved .example domain. type is call or form.
Lead webhook providers and what each reads
providerReads
callrailCallRail's call payload as it's sent
whatconvertsWhatConverts Phone Call and Web Form leads
genericid, date, type, landing_page, source, duration, phone or email
quoQuo call.completed events; outbound calls are skipped, not errors

What about tools that can't set a header?

CallRail and WhatConverts webhooks take a URL only, so the key goes in the URL as a key parameter: /api/hooks/leads?provider=callrail&key=rk_… The settings page shows that form for those two.

More on this:CallRailWhatConvertsWebhook docs

Keys and limits.

Each client site has its own key, shown in Client settings › Leads & revenue by its last four characters. New key stops the old one right away, so update the tool that posts.

Webhook responses by case
CaseStatusResponse
Every item saved200ok true, with inserted and updated counts
Some items bad200ok false; the good items are saved and errors lists the bad ones
Every item bad, or the body isn't JSON400ok false, with the errors
Missing or unknown key401Nothing saved
More than 500 items413Nothing saved; split the batch
Same items sent again update instead of doubling: deals by id, leads by provider and id.

Recipes.

Step-by-step setups for the tools agencies ask about most, each with its field mapping.

More on this:No webhook? Upload a CSVWhat the deals add to a reportClick-share attributionAttribution docs

Check it worked.

Client settings › Leads & revenue lists the last 15 deals received and the latest calls and leads. Each call tracker has Send test lead, which posts a fictional test lead so you can see it arrive before a real one does.

  • Recent deals: the last 15 received
  • Calls and leads with their landing page and match
  • Send test lead for CallRail, WhatConverts and generic
The Connect revenue settings: the form snippet, CSV upload and the webhook request with the key hint and New key.
Client settings › Leads & revenue

Recent deals

Received by webhook · Copperline Gutters

Sample data
  • D-1042 · Gutter guard installOct 14 · won · organic$4,200
  • D-1051 · Gutter repairOct 9 · won · organic$850
  • D-1057 · Gutter cleaningOct 3 · won · organic$340

Webhook questions.

What does a webhook request to RankUpside look like?
A POST to /api/hooks/revenue with the header Authorization: Bearer and the site's key, and a JSON body with id, date, landing_page, amount, status and source. You can send one deal or an array of up to 500.
What happens if one deal in a batch is bad?
The good deals are saved and the response lists an error for each bad one, such as an unreadable date or a negative amount. The request only fails as a whole when every item fails.
Can I send the same deal twice?
Yes. Deals with the same id update instead of doubling, and deals sent without an id get a stable one from their contents. Leads with the same provider and id update too.
Where do I find the key?
In the client's settings under Leads & revenue. Each client site has its own key. Choose New key to replace it; the old key stops working at once.
What if the deal has no status?
It's saved as won, since most CRMs fire the webhook when a deal is won. Send open or lost to record those stages.
Which call trackers work with the lead webhook?
CallRail and WhatConverts payloads are read as they are. Quo call events and any other tool use the generic format: id, date, type, landing_page, source, duration, and phone or email for matching.

Connect a client and see their first report.

The first report builds from 13 weeks of Search Console history as soon as you connect. Start with 3 client sites.

What your client sees each weekSample data
Oxbow & Vane

Weekly search report · Copperline Gutters

Sep 14 – Oct 11, 2026 vs the 4 weeks before

Copperline Gutters got 27 clicks from named buyer searches in the last 4 weeks, up 23% from the 4 weeks before. Google hides the search terms behind 84% of all 289 search clicks. Rankings rose across the site: pages that steadily show up are up about 2.4 positions.

Buyer clicks23%
27from 22
All search clicks14%
289from 253