Ads & Attribution

Stop paying for clicks that never deposit

Meta optimizes on whatever event you send it. A click or a channel join teaches it to find more clickers and joiners. A verified deposit, sent with its real amount, teaches it to find people who fund a broker account.

Optimizing Meta ads for deposits means telling the ad account to chase the event that pays, a verified broker deposit, instead of the event that is easy to count, a click or a channel join. Meta's delivery system does exactly what its optimization goal tells it to do: find more people who do that one thing. Point it at clicks and it buys clickers. Point it at a deposit carrying a real value and, over time, it buys people who look like depositors. Scalegram is the Telegram CRM for IBs and forex affiliates, and it is built to hand Meta that second event.

This is not a tracking setup guide. Meta ads Telegram conversion tracking covers the plumbing, the fbclid, the Conversions API call, the bot that watches for joins. This article is about which event you point the campaign at once the plumbing works, and why most Telegram funnels for IBs are still pointed at the wrong one.

What "optimize for X" tells the ad system to do

Meta's own Marketing API documentation is direct about this: "Facebook uses your ad set's optimization_goal to decide which people get your ad," and gives the plainest possible example: "with APP_INSTALLS, Facebook delivers your ad to people who are more likely to install your app," according to the Marketing API bidding overview. Swap the goal and the audience the system hunts for changes with it. An ad set optimized for link clicks gets shown to people who click things. An ad set optimized for a Telegram join gets shown to people who join things. Neither group is defined by whether they go on to fund a broker account.

The same page lists VALUE among the valid optimization goals for a conversions campaign, alongside goals built around a single flat event. Value optimization is not "more purchases." It is more of whatever number you attach to the purchase.

Clicks, leads and joins are the wrong thing to feed it

A click is cheap to get and carries no information about intent to fund an account. A join is one step closer but still free: anyone curious enough to tap "Join" ends up in the count, whether they read three posts and left or asked for the broker link within the hour. Optimizing on either event trains the ad account to find more people who behave like the crowd already inside the funnel, most of whom never open a broker account. The campaign gets cheaper and the deposits do not move, because the signal it is chasing was never connected to a deposit in the first place.

Conversions API vs pixel covers why a join has to be posted from a server at all. This article assumes that part is solved and asks the next question: once you can report any event you want, which one should it be.

The value field is what makes a purchase a signal Meta can use

A server event that just says "purchase happened" is already better than a join, but it still treats a large IB deposit the same as a small one. Meta's Conversions API documentation defines the fields that fix that. The value field is described as "required for purchase events or any events that utilize value optimization" and as "a numeric value associated with the event" that "must represent a monetary amount," and currency is required alongside it as "a valid ISO 4217 three-digit currency code," per the Conversions API custom data parameters page. Send the deposit amount in that field and a value-optimized campaign has a size to rank people against, past a plain yes or no.

This is the difference between telling Meta "this person deposited" and telling it the actual size of that deposit. The first trains the system to find more people who deposit something. The second trains it to find more people who deposit like your best clients, because the size of the number is part of what it learns from.

Where the deposit number actually comes from

None of this works if the number is a guess. A lead who names a deposit amount in the chat is stating a claim, and a campaign fed on claims learns to find people who make claims. Verifying a broker deposit automatically is what makes the number real: the bot looks the lead's email up in the broker's IB portal or the prop firm's CRM over a read-only API and reads back what completed, not what was typed. Only a confirmed deposit, with the amount the broker's own records show, is a fact worth sending to an ad account.

In a Scalegram funnel that check happens mid-conversation, before the paid group opens. The client card moves to Deposited, the amount is on the card, and that is the number that goes back to Meta against the click that started the conversation, not an estimate and not a self-report.

Optimization events compared

Event reported to MetaWhat the campaign learns to findHow close it is to a deposit
Link clickPeople who tap linksNothing in common with funding an account
Landing page viewPeople who load pagesNothing in common with funding an account
Channel join / bot startPeople curious enough to join something freeWeak; most never reach a broker
Self-reported "I deposited" in chatPeople who say the thing that unlocks the groupUnreliable; the number is not checked anywhere
Verified deposit with amountPeople who look like a fellow client who actually funded an accountDirect; the event is the sale, at its real size

Setting a deposit-value event up in Scalegram

Under Links, a tracked link carries the UTM tags and catches fbclid, gclid, ttclid and sccid at the click, or one line of code does the same job on a hosted landing page. A dedicated bot with admin rights in the channel reports every join server side to Meta, TikTok and Snapchat, matched back to that click. Under Integrations, the broker's IB portal or prop firm CRM address and an API key let the bot check a lead's email mid-conversation over a read-only connection, every call a GET, nothing written back. When the check confirms a deposit, the client card moves to Deposited with the amount on it, and that figure is what gets reported against the original click. Forex affiliate CRM walks the whole funnel this sits inside, from the ad to the broker portal; how it works lays out the flow blocks that connect the pieces.

Lite is $99 a month with one tracked link and one pixel group; the full plan is $999 a month with unlimited links, pixel groups and Meta Ads accounts. Every feature is on both plans, only the counts change, as the pricing section shows.

What actually changes

Nothing about the ad platform's own promise changes: it still optimizes on whatever it is fed, and it still needs a working history of that event before it settles down. What changes is what that history is made of. A campaign that has spent weeks learning from joins has learned to find joiners. Switch it to a verified, valued deposit event and it starts over on a different lesson: who looks like the people who actually funded an account, at the size they actually funded it. That is the only lever this article is about. It does not promise a lower cost or a faster funnel, only that the number reaching Meta stops being a guess.

Sources

Meta optimizes on the number you send it. Send a join and it finds joiners. Send a verified deposit at its real size and it starts looking for people who fund accounts like your best client did.

— The Scalegram Team

Key takeaways

  • Meta's optimization goal decides who the campaign is shown to; whatever event you optimize on is the behavior it goes looking for.
  • A click or a channel join is free and carries no signal about who funds a broker account.
  • The Conversions API value field, required for value optimization, is what lets Meta rank people by deposit size instead of a plain yes or no.
  • The number has to come from the broker's own records, checked read-only, not from a claim typed in the chat.

Frequently asked questions

How do I optimize Meta ads for deposits instead of clicks?

Report the verified deposit, with its real amount, to Meta's Conversions API as a purchase event carrying the value and currency fields, matched to the original ad click through fbc. Scalegram checks the deposit against the broker's own records first, then reports it against the click that started the conversation.

Why does a Telegram channel join make a weak optimization event?

A join is free and open to anyone curious enough to tap a button. Optimizing on it trains Meta to find more people who join things, not more people who fund a broker account, which is a different and much smaller group.

Do I have to send the deposit amount, or is a yes or no enough?

A yes or no still trains Meta to find people who convert, but Meta's own documentation ties its value field to value optimization specifically, so a campaign only ranks people by deposit size when the real amount is sent along with whether an event fired.

Where does the deposit amount come from if the lead only says it in chat?

Nowhere reliable. Verifying a broker deposit automatically reads the amount from the broker's IB portal or prop firm CRM over a read-only API instead of trusting what was typed.

Put one bot on your own Telegram

Scalegram answers every lead in the language it arrived in, checks the deposit against the broker's own records, opens the paid group and files the client. Lite starts at $99 a month.