Skip to main content

How to Upload Custom Audiences to Meta, TikTok, Snapchat, and Google in One Click

Published 5 min readMarkdown

If you have ever manually uploaded a custom audience to Meta, TikTok, Snapchat, and Google Ads in the same afternoon, you already know the problem. Each platform expects a slightly different file format. Each one hashes IDs on its own terms. Each one gives you a match rate hours later and leaves you guessing why it is 18% instead of 60%.

A UA team running cross-platform has to repeat this ritual every time they want to test a new segment. It is the single most boring, error-prone task in mobile UA — and it is almost entirely avoidable.

Here is what the manual process actually looks like, what breaks, and how one-click uploads from a behavioral audience catalog compress days of work into a single action.

What "one-click upload" actually means

When you use Onmo Signal, the flow is:

  1. Browse the catalog of 273 pre-built segments — filter by app category, geography, quality tier.
  2. Pick a segment. You see the device count, the category breakdown, the countries, and the behavioral scoring criteria before you commit.
  3. Click Upload to Meta (or TikTok, or Snapchat, or Google).
  4. The audience appears in your ad account as a Custom Audience, ready to use in a campaign or as a lookalike seed.

That is the whole loop. No CSV export. No hashing step. No guessing at which column the platform expects. No 4-hour wait to see if the match rate came back reasonable.

The same segment can be pushed to all four platforms from the same screen, which matters more than it sounds — most UA teams test the same audience on two or three platforms to see where it converts best, and doing that test manually used to be a half-day of work.

The manual process is worse than you remember

The steps most UA managers know by heart:

  • Export device IDs from your MMP or data warehouse.
  • Hash the IDs to the format each platform expects (SHA-256 for Meta, MD5 for older integrations, platform-specific handling for IDFAs vs GAIDs vs Android IDs).
  • Name the file in the exact convention the platform's ad manager wants.
  • Upload. Wait. Check match rate. Often find out the format was wrong. Re-export. Re-upload.
  • Repeat for the next platform.

Even when everything goes right, you are still stuck with the bigger problem: the audience you uploaded is only as good as the seed data you started from. Most UA teams build these audiences from their own install base — which caps lookalike quality at whatever ceiling their existing users represent. If your game has 200,000 installs in the US, your lookalike math is bounded by those 200,000 signals.

Uploading a behavioral segment from an external catalog — 122M puzzle game players scored by actual spend behavior, for example — changes the math, because the seed is not your install base. It is a population of real, behaviorally-scored players across 170,000+ apps.

Match rates improve when you skip the hashing step

One underrated benefit of server-to-server upload is that the audience data platform handles the device ID format translation natively. Instead of you exporting IDFAs and hoping Meta's hashing library matches yours, the upload goes through as device IDs that have already been matched and normalized against each ad network's graph.

In practice this shows up as higher match rates. The gap between a manually uploaded CSV and a server-to-server upload is not always huge, but it compounds. Ten percentage points of match rate across four platforms, across 40 audience tests a month, is the difference between finding a winning segment in three weeks and still looking after six.

Where one-click uploads pay off most

Three scenarios where the workflow difference becomes real:

A/B testing audience sources. If you want to compare your own first-party lookalike against a behavioral segment — say, your top-spenders-lookalike vs. the Casino / Slots segment on Signal — you can push both into Meta within a few minutes and start the split the same day. That test used to take a week, because you needed engineering help to export the first-party file and then a manual upload round to get the behavioral side live.

Multi-platform campaign launch. A puzzle game launching on Meta, TikTok, and Snapchat in the same week needs the same seed audience on all three, and ideally expansion audiences specific to each platform's algorithm. Four or five audiences × three platforms = 15 uploads. At 20 minutes per upload, that is a full day of work before you write a single line of ad copy.

GCC expansion. US-based publishers expanding into Saudi Arabia or the broader Gulf need GCC-specific audiences, and most US-centric data platforms cannot provide that depth. When a team finds a GCC-ready source (48M Saudi device IDs, 58M+ GCC combined), the friction of manually pushing that to four ad platforms is often what delays the test by two or three weeks.

The catalog-first model

The deeper shift is not that uploads got faster — it is that you stop thinking in terms of "build this audience from scratch" and start thinking in terms of "pick the right one from the catalog".

When a new UA test takes 5 minutes instead of 5 hours, the number of audiences you test per month goes up by an order of magnitude. The bottleneck moves back to where it should be: creative iteration and campaign strategy, not waiting for a CSV to re-upload because the hashing was wrong.

Try it

Onmo Signal is currently free — no upload limits, no minimum spend. Browse 273 pre-built behavioral segments, upload to Meta, TikTok, Snapchat, or Google in one click, and start testing.

signal.onmoai.com

Free access is a limited-time launch window. Paywall expected within 2 months.

No comments yet. Be the first to comment.

More from this blog