How it works: Your Twilio number is your dedicated dispatch line. Outbound texts go from this number. When activists reply or call back, it forwards to your personal phone and shows in the ๐จ inbox.
Twilio setup: In your Twilio Console, go to your phone number's settings and set these webhook URLs:
What this does: Scans outbound SMS sent in the last 7 days and starts a response timer for any activist who was messaged about an upcoming shift but doesn't currently have a timer showing. Use this once after a session restart to restore timers that were lost before they started persisting to Firestore.
What this does: Same as the backfill above, but scoped to a single shift you pick (search by name, e.g. "Farm Bill Senate Outreach"). Useful when you've already messaged a group about a specific event and want their response timers to start ticking without scanning every recent outbound message.
What this does: Walks every shift, groups similar names together (with abbreviation expansion โ AdMo โ Adams Morgan, Mt Pleasant โ Mount Pleasant, etc.), and links every member of a multi-shift group to its canonical name. Skips shifts that already have a series link. Run console autoLinkAllShiftsToSeries({dryRun:true}) first to preview without writing.
What this does: Pulls the last 14 days of outbound calls from Twilio's own call log and reconstructs the ๐ "called this week" badges for any activist whose entry got clobbered by the multi-dispatcher race condition. Safe to re-run โ it skips entries that already exist.
๐ Stampede Alignment
What this does: Walks every assignment document in Firestore and demotes any manually-confirmed activist to tentative, plus removes any host that was not set on Stampede. Going counts (X/Y) will then match Stampede exactly. Confirmations and hosts are now Stampede-only โ this one-time cleanup aligns existing historical data with that rule.
๐ Asana Integration
Add destination:
How it works: Add one destination per person whose Asana project you want to forward to (e.g. Justin, Sam, Cady). Tasks created in Task Manager sync to the default destination. From the ๐จ inbox you can forward any message to any destination's Asana project. Each person generates their own Personal Access Token in Asana Developer Console and shares it for their destination.