Cookie preferences

Choose what we may use. Strictly necessary cookies keep you signed in and can't be turned off; everything else is your call and changes nothing about how the site works. You can change your mind any time from the footer.

For Keap

Keap knows which email they opened. It does not know which advert produced them.

Export paid invoices and contacts, upload your ad and call sources beside them, and rank marketing on revenue rather than on opens.

No API key Nothing to install in KeapNothing to install No card requiredNo card

CloseRev reads a Keap export of paid invoices alongside its contact records — the contact's email or phone, the amount and the date — and matches them against the calls and ad clicks that produced the contact in the first place. Keap can tell you which sequence a person received; it cannot tell you which advert put them into it, because that happened before they existed as a contact. Revenue with no traceable origin is reported as Direct / Unknown.

Last checked against Keap's own documentation on September 24, 2026.

The gap

Your automation reports opens, clicks and tags. Your bank reports revenue. Nobody in the business can join the two without an afternoon and a spreadsheet.

Keap sees

What was sold, to whom, and for how much.

no shared row
Your ad account sees

The click, the keyword, the call, and what each one cost.

The file

What the export needs in it.

Three things carry the match: who, how much, and when. Anything else is optional and only changes how the report can be sliced.

  1. Needed

    Contact email or phone

    On the contact the invoice belongs to. Keap is email-first by design, so the email is usually well populated and the phone is the one worth checking.

  2. Needed

    Invoice or payment amount

    What was paid rather than what was quoted. Where you sell subscriptions, each payment is a row and summing by contact is what makes the report readable.

  3. Needed

    Payment date

    When the money arrived. For subscriptions this spreads one customer across many rows, which the report handles by summing per contact.

  4. Optional

    Tag or campaign

    Keap's own tags. Worth including so the report can compare what the automation believed about a contact against what they actually paid.

Step by step

Getting the file out of Keap.

Written for somebody with Keap open in the next tab. Report names vary by edition, so each step says what to look for.

  1. Export paid invoices with the contact

    One row per payment with a contact detail, the amount and the date. Unpaid invoices are not revenue and do not belong in the file.

  2. Export the contact list if the invoice export lacks details

    Keap's invoices reference a contact rather than repeating their email and phone. If your export does not carry them, take the contact list too and the two join on the contact.

  3. Export your ad and call sources

    Paid search, paid social, call tracking, webinar and lead magnet sign-ups from outside Keap. Contact detail plus the source.

  4. Sum subscriptions by contact

    If you bill monthly, one customer is many payments. The report sums per contact so a long-standing subscriber is one customer rather than twenty-four wins.

  5. Upload both

    The join is the email and the phone, normalised on both sides, with first revenue and subsequent revenue reported apart.

What comes back

The page Keap cannot show you.

Revenue by channel, the count of sales behind each figure, and an honest bucket for the ones nobody could trace. Sample figures, from the worked example on the Business Consulting page — not from a Keap account.

Traced to a channel$513,00057% of $900,000
Sales matched28 of 49high confidence only
Average sale$18,400per paid sale
ChannelShareSalesRevenue
LinkedIn Ads9$171,000
Content & SEO11$198,000
Events & speaking8$144,000
Direct / Unknown21$387,000

Unmatched sales stay in Direct / Unknown. They are never spread across the paid channels to make the total look better.

The argument

What changes when the sale and the ad share a row.

Automation measures engagement, and engagement is not money

Keap is very good at telling you what happened after somebody became a contact: which sequence they entered, what they opened, what they clicked, which tag they earned.

None of that is revenue, and the correlation between engagement and purchase is weaker than it feels. The people who open everything are not reliably the people who buy, and a sequence with excellent open rates can produce nothing at all.

Matching paid invoices back to acquisition sources replaces the proxy with the outcome. It also tends to reorder the sequences, because the ones that convert are not always the ones with the best engagement.

The origin of a contact is the thing Keap never saw

A contact enters Keap at the moment they fill in a form or are imported. Whatever happened before that — the search, the advert, the podcast, the referral — happened outside and left no trace inside.

So the automation can attribute everything downstream of the form and nothing upstream of it. For most small businesses the upstream part is where the money is being spent.

An external lead file supplies exactly that missing half. It is the same contact detail on both sides, which is why the join works without anybody changing how they use Keap.

Subscription revenue makes per-payment attribution nonsense

A membership, a retainer or a subscription produces a payment every month from one acquisition. Counted per payment, a customer of two years is twenty-four conversions and the channel that produced them looks extraordinary.

Counted per contact, they are one customer worth a known amount, which is the number a budget decision needs.

The report gives both and keeps first revenue separate from recurring, so the question of whether a campaign should be credited with year three is visible rather than answered silently.

Tags record intent and the invoice records the outcome

Most Keap accounts accumulate tags over the years — interests, lead scores, campaign membership, source fields somebody set up once. They encode real judgement about contacts.

Putting a tag beside the revenue that contact eventually produced is a cheap test of whether the judgement was right. Frequently one heavily-used tag turns out to carry no relationship to money at all, which is worth knowing before another sequence is built on it.

Fair questions

“Keap already does that.” Not quite.

They say

“Keap already has campaign reporting.”

We say

Downstream of the form, which it sees. Upstream of it — the advert, the search, the call — is where the spend goes and where it has no visibility.

They say

“We sell subscriptions, so revenue is spread out.”

We say

The report sums per contact, so a two-year subscriber is one customer rather than twenty-four wins.

They say

“Our contacts come from many places.”

We say

That is the normal case. Every source you can export becomes a row; anything you cannot lands honestly in Direct / Unknown.

Questions

Keap, specifically.

Something else? Ask us and a person answers.

No, and deliberately: Keap holds your automation, and a tool with write access to that could change what your customers receive. This reads an export and can change nothing.

Keap and the other product names and logos on this page belong to their owners and are shown to identify the software a file comes from. CloseRev is not affiliated with or endorsed by them, and connects to none of them: it reads a file you export.

Start today

Two exports, and you will know.

Nothing to install in Keap, no API key, and no need to have been tracking anything until now. Last year works as well as this month.