Sending your guide, checklist or discount code by DM is one of the best ways to turn a good post into leads. It is also one of the easiest ways to get your account limited if you do it wrong. The difference is simple: did the person ask for the message?
The rule that matters: on request only
X's automation rules allow automated replies and direct messages to people who ask for them. They do not allow unsolicited or bulk messages. So the safe pattern is "ask to get": your post invites people to reply (often with a keyword), like or repost to receive something, and only the people who do what the post asked receive the DM.
Write a post that announces the DM
- Say what they get: "I wrote a 1-page checklist for pricing your first digital product."
- Say how to get it: "Reply PRICE and I'll DM it to you."
- Say it is a DM, clearly, in the post itself. People should never be surprised by your message.
Keep the DM short and useful
Greet the person by first name, deliver the link, and stop. No second pitch, no follow-up sequence they did not ask for. A useful DM gets replies and goodwill; a pushy one gets reported.
Use caps and an end date
- One DM per person per campaign, even if they reply several times.
- A maximum number of DMs per campaign, so a post that goes viral does not turn into a flood.
- An end date (72 hours is plenty): replies to an old post rarely expect a DM anymore.
- Stop immediately when X answers "too many requests", and try again later.
What to avoid
- DMing people who liked or reposted a post that never said a like or repost would get them a DM.
- DMing your followers or a list of accounts in bulk.
- Tools that log into X through a browser bot or scrape pages instead of using the official API.
How our tool does it
Campaigns run only on your own posts (or your pinned post), for the actions your post announces: replies (with your keyword if you set one), likes or reposts. Once per person, with a cap and a 72-hour limit. You confirm that your post announces the DM before launching, and the campaign shows its maximum API cost up front.