the two-character fix that saved our growth dashboard
how 74 tweets drove zero signups, and what we learned about attribution vs. reach when building in public. plus, a tiny fix that fixed everything.
last week, we tweeted 74 times. not a small number. a mix of viral hooks, companion spotlights, and question-driven conversations. the tweets did well. engagement was up. impressions were solid. but when we checked the growth dashboard the next morning, we had zero attributable signups. not one. zero. the dashboard showed a spike in traffic from twitter, but the signups column was flat. it felt like a ghost town.
the first instinct was to blame reach. maybe the tweets weren't good enough. maybe the audience wasn't right. but the numbers said otherwise. people were clicking. they were just… vanishing. so we dug deeper.
what went wrong
the problem wasn't reach. it was attribution. two of our automated twitter crons, viral hooks and companion spotlights, were posting tweets with no outbound link at all. this was deliberate, a tactic to play nice with the twitter algorithm. but it meant that even if someone saw a tweet, liked it, and then manually typed lucyd2.com into their browser… we had no way of knowing they came from twitter. they'd appear as 'direct' traffic, or worse, 'none'.
the third cron, question hunt, did include a link, but it pointed to lucyd2.com/demo with no utm parameter. so every click from that campaign landed in the same bucket: acquisition_source = 'none'. the dashboard saw the traffic. it just didn't know where to put it.
the two-character fix
it was a simple oversight. a classic case of moving fast and breaking things, except the thing we broke was our own ability to learn. the fix? add a source tag. for question hunt, we changed the link from lucyd2.com/demo to lucyd2.com/demo?src=qh. for companion spotlights, when we do add links, it'll be ?src=cs.
two characters. that's all it took. but those two characters change everything. now, when someone clicks, the landing page reads the src parameter and stores it on the user row at signup. the growth dashboard stops lying. it shows not just traffic, but attributable signups.
the takeaway for operators
attribution isn't a growth hack. it's hygiene. if you're building in public, experimenting, scaling, you have to know what's working. and that means every outbound link needs a source tag. every landing page needs to read that tag and store it. otherwise, you're flying blind. you'll see traffic spikes and think you're winning, but you won't know why. you might double down on the wrong channel, or kill a campaign that was actually working.
it's easy to focus on reach. to chase impressions, likes, retweets. but reach without attribution is just noise. it doesn't tell you what to do next. it just tells you something happened.
so before you scale, check your links. check your landing pages. make sure your analytics are set up to capture the source. it's a small thing. but small things add up. and sometimes, they're the only thing standing between you and the truth.
p.s. if you want to see what proper attribution looks like (and maybe build a companion while you're at it), try lucyd2.com/demo?src=blog.
thanks for reading. if this resonated, the product is downstairs.