The problem this solves
Reddit matches a customer list on hashed identifiers, and it is unforgiving about the details. An email that was hashed with a capital letter or a trailing space produces a different hash from the one Reddit holds, and the row silently fails to match. Teams that upload a raw export of a CRM list and see a small audience usually have a normalization problem rather than a reach problem.
The second problem is knowing when the audience is actually usable. Reddit processes uploads in the background, the status moves from processing to ready over time, and the person who uploaded the file is often the one who has to remember to check. The paid team waits on a number that nobody is watching for.
List <name> already exists in the workspace with the people you want to reach. This playbook turns it into a Reddit Ads custom audience with the same name, does the normalization and hashing correctly, and reports the size and status to #paid when Reddit is done.
How the mission runs
- Read list <name>, take stock of the identifiers and suppress. The Audience Agent loads the list and checks which rows carry an email address Reddit can match on. Rows with no usable identifier are set aside and counted, and duplicate people collapse into one row. With a CRM connected, current customers and open opportunities are removed before hashing, along with any competitor or partner domains you name, and the count removed at each pass is kept for the summary.
- Normalize and hash the way Reddit documents. Each email is lowercased and stripped of surrounding whitespace, then hashed with the algorithm Reddit specifies for customer lists. The plaintext stays in the workspace, and the hashed rows are what travel to the connected Reddit Ads account.
- Stage the audience, then create it on approval. The agent shows the audience name <name>, the number of hashed rows going in, the number set aside and why, and the ad account it will be created on. After you approve, the custom audience is created through the connected account and its id is recorded in the audit trail.
- Wait for Reddit and post to #paid. Reddit processes the audience on its own schedule. The agent checks the status until the platform marks the audience ready, then posts one message to #paid with the audience name, the size Reddit reports, its status, and whether it meets the minimum Reddit requires before an audience can be used in targeting.
The prompt
This is the exact objective the agent receives. Swap the obvious placeholders for your own domain, segment or channel and run it as-is from the console, Slack, or the API.
What comes back
A custom audience named <name> on your connected Reddit Ads account, built from the contacts on list <name> after suppression and Reddit-specific normalization and hashing. The #paid message states the size Reddit reported, the audience status, the rows submitted and the rows set aside, and the mission result keeps the full ledger so the same list can be refreshed into the same audience later.
Make it yours
- Build the LinkedIn matched audience and the Meta custom audience from the same list in the same run, with all sizes in a single message.
- Use a scored subset, such as everyone above a fit-score threshold on list <name>, when the Reddit budget should go to the best-fit rows only.
- Schedule a monthly refresh that adds new list members to the same audience and removes anyone who became a customer, posting only the delta.
Frequently asked questions
Does Reddit ever see the plaintext emails?
No. Emails are hashed in the workspace before the upload call, and only the hashed values are sent to the connected Reddit Ads account. The audit trail records the row counts without exposing the identifiers.
What if the list only has phone numbers?
Reddit customer lists match on email and mobile advertising ids, so rows without an email cannot be used as they are. Ask the agent to run the email finder over the list first, with verification, and the rows that get a verified address join the upload.
What does status mean in the #paid message?
It is the state Reddit reports for the audience: processing, ready, or too small to serve. The agent quotes it exactly as the platform states it and never guesses at a size before Reddit has finished.
Can I see which rows matched?
Reddit reports a total size rather than a row-level result, so the agent shows what went in and what came back. Comparing the two is how you judge the freshness of the list.