Your lead generation contract says the leads are yours. The platform permissions say otherwise, and the permissions are the part that actually runs.
Ownership of the leads your agency generates is decided by account access, not by an agreement. Google Ads will not let an agency manager account download leads from a client account unless that client account grants the manager account ownership, and it deletes lead form leads after 60 days either way. Meta puts it in a single line of its own developer documentation: all leads generated via a lead ad belong to the Page. If the ad account and the Page are your agency's, the leads are your agency's too, whatever the signature page says.
I build the plumbing that moves leads out of ad platforms and into systems the client controls, and this is the problem I get called about after a relationship ends, never while it is going well.
A lead you cannot export yourself is not an asset. It is a screenshot with an expiry date.
The mistake: ownership written in the contract and nowhere else
The handover usually looks generous. A monthly report, a CSV attached to an email, a login to a dashboard, a Slack channel where every new lead pings. Nobody is hiding anything. The buyer reads all of that as proof the leads are theirs, and it is proof of nothing, because a report is a copy and the record still sits in an account somebody else administers.
The bill arrives at one of two moments. The first is the end of the relationship, when the agency turns off the ads, and the forms, the audiences, the conversion history and every lead that ever filled one in go with them. The second is quieter and more expensive. Eighteen months in, you decide to work the people who filled in a form and never bought. You go to pull the list. Most of it was deleted by the platform long ago, because nobody wired an export and everybody assumed the platform was the archive.
Neither of those is a trust problem. I have watched it happen with agencies that did excellent work and behaved well on the way out. It is a plumbing problem, and plumbing is decided before the first campaign, not during the last one.
"You get a full report every month and a CSV of every lead. Total transparency, nothing held back."
Both true, and neither one gives you the record. You are being handed copies of a file you cannot open yourself.
"The forms run in my ad account and my Page, you have access to both, and every lead hits my CRM the second it is submitted."
Same agency, same work, same reports. The difference is which side of the fence the original sits on.
Google Ads already answered this, in a permissions table
Google publishes the answer on its Download leads help page, and it is more direct than most agency contracts. The page opens with the deadline: "Since leads expire after 60 days, ensure you download them frequently." Sixty days is the whole life of a lead form record. The self serve CSV is shorter still, because the lead form assets page states you can only download leads from the last 30 days. The Google Ads API will hand you up to 60 days, and a webhook or a supported integration gets each lead in real time.
Then comes the access chart, which is the part worth reading twice. Downloading leads at all requires Standard or Admin access. Billing, Email only and Read only cannot download leads, on any account type. And the line that decides the ownership question: if you have a manager account, you can only download leads from a client account if the client account gives you ownership. A manager account with full Admin access and no granted ownership sits in the one row of that table with a red cross next to it.
Read that from the buyer's chair and it inverts the usual worry. The agency working inside your account, through its own manager account, cannot pull your leads unless you hand it something. The agency running your campaigns from its own account has the leads and you have the report. Whichever of those you are in, you now know, and it took one help page rather than a lawyer.
Meta answered it in one sentence: the leads belong to the Page
Meta's lead ads documentation for developers lists the Facebook Page as a requirement and explains why in seven words: all leads generated via a lead ad belong to the Page. The same page adds that if you run the ad on Instagram, the leads generated still belong to the Facebook Page. Not the ad account, not the agency, not the person who built the form. The Page.
That single sentence resolves an argument I have refereed several times. If your agency created the Page, or created the business portfolio that holds it, then getting your leads out is not a data export. It is a negotiation, and you are the one asking. Access can be arranged, because Meta lets Page admins customise who may download leads through the Leads Access Manager, and its documentation notes that where leads access has not been customised, all Page admins have it. Arranged access is still somebody else's setting though, and settings get changed.
The other reason to sort this out early is that the clean fix is not a same day job. A custom integration that reads leads through the API needs an app that has passed App Review with the leads retrieval and Pages manage ads permissions, plus Business Verification. That is a project. Doing it while you are mid argument about who owns what is the worst possible time to start.
Three moves before your next campaign goes live
The bottom line
Ask a lead generation agency who owns the leads and you will get a sincere yes. Ask which account the form lives in, which Page it belongs to, and where the lead is written within ten seconds of submission, and you will get the real answer. Those three questions take a minute and they settle the thing your contract only gestures at.
None of this is a reason to run outbound in house. Agencies are better at this than most teams will ever be, and the good ones will happily build inside your accounts. It is a reason to spend one afternoon on setup before you spend a year on spend.
I build this layer as a fixed scope engagement: the accounts structured in your name, the forms and webhooks wired into a system you own, and the outbound programme running on top of it. Builds start at $2,497 and the managed programme runs $1,997 a month, normally sending in about 14 days. Who I am.
Book a 30 minute call: cal.com/zeeshanwaheed/30min or email [email protected].