This guide assumes you have never used CRM Solid before, and you have a real outreach motion you want running by the end of today. Every step is timed: if you fall significantly behind any of the budgets below, you are probably overthinking. Skip ahead, get the system live, and refine later.
Step 1: Pick a plan and create your workspace
Budget: 2 minutes. Head to app.crmsolid.com/register. CRM Solid uses a flat-pricing model: no per-seat tax, no surprise rate increases when you add more accounts. The number that scales with plan tier is the daily message ceiling and the number of automation steps you can have active at once. Pick the tier that maps to your expected daily volume; you can change it later from the billing settings.
The signup form asks for an email, a password, a workspace name, and a preferred language. Use a real workspace name; it appears in the unified inbox header and in any export filenames, so "crm-solid-test-1" is going to bite you in week three.
After signup, confirm the verification email. Until you verify, outbound sends are blocked as an anti-abuse measure.
Tip: If you sell into multiple distinct customer segments (e.g., B2B SaaS founders vs ecommerce DTC), create one workspace per segment. The flat-pricing model means a second workspace is free with the same plan, and it keeps pipelines, templates, and analytics clean.
Step 2: Connect your first Telegram account via MTProto
Budget: 3 minutes. CRM Solid uses MTProto, Telegram's native application protocol, not the Bot API. That distinction matters: MTProto lets you send DMs to anyone (subject to privacy settings), see typing indicators, view profile pictures, and react to messages. The Bot API does not.
From the left sidebar, click Accounts, then Add Telegram account.
- Enter your phone number in international format (e.g.,
+14155551212). Telegram will SMS you a 5-digit login code within 30 seconds. If you do not receive it, Telegram will fall back to a voice call after two minutes. - Paste the login code into the panel. If the account has cloud 2FA password enabled (most do), the panel will prompt for your 2FA password next. CRM Solid never persists this 2FA password; it is used once to unlock the session and immediately discarded.
- Wait for "Authorized". The encrypted session file is now stored server-side. From this point on the panel reconnects automatically every time you open it.
You will get a notification in your Telegram client that a new device ("CRM Solid Web") has been added. Do not log it out; that ends the session and forces a re-authentication.
Common pitfalls
- SMS code never arrives: Telegram throttles SMS to a given number to one code per 60 seconds. If you mistyped your number and asked for a resend, wait the full minute.
- 2FA password forgotten: You cannot reset Telegram 2FA without losing the entire account and waiting seven days. Reset it from your Telegram client first if needed, then re-add to CRM Solid.
- "This phone number is banned": The account was previously flagged for spam. Use a different number. We cover account hygiene in detail in our ban-avoidance guide.
Step 3: Import your existing contacts
Budget: 3 minutes. CRM Solid runs on contacts, not on chats. Every conversation is anchored to a contact record so you can tag, segment, score, and route across channels. Get your contact base in first; everything else builds on top of it.
Click Contacts in the sidebar, then Import. You have three options:
- CSV upload: drag a CSV with up to 100,000 rows. The importer auto-maps columns whose headers match common patterns (
first_name,email,telegram_username,phone,tags,owner). Custom columns become custom fields with one click. - Telegram address book sync: pulls every contact already saved in the connected Telegram account. Useful if you have been doing manual DMs for months and want to centralize them in the CRM.
- Manual add: fastest for one-off contacts. Good for warm intros you want to convert into pipeline records.
Deduplication runs automatically on three keys: telegram_user_id (if present), phone (E.164-normalized), and email (lowercased). Conflicts surface in a "review" tab where you pick the winner per duplicate.
# Example minimal CSV
first_name,last_name,telegram_username,email,phone,tags,owner
Alice,Yu,@alice_y,[email protected],+14155551001,saas;us,[email protected]
Bilal,Khan,@bilal_dev,[email protected],+923215557722,saas;pk,[email protected]
Common pitfalls
- Mixed-locale phone numbers: always normalize to E.164 (
+CC...) before import. Local-format numbers ("0555...") break dedup. - Comma-inside-cell: use the standard CSV escape (wrap the cell in double quotes). If you exported from Google Sheets or Excel, the escape is automatic.
- Tag overload: import at most 5 tags per contact. Tag sprawl makes segments noisy fast.
Step 4: Design your pipeline stages
Budget: 3 minutes. A sales pipeline is just a list of stages a deal moves through, plus the entry criteria for each stage. CRM Solid ships with a sensible default for B2B SaaS-style sales, but you should replace it with stages that match how you actually close.
Go to Pipeline > Edit stages. Here is a battle-tested five-stage default for outbound DM sales:
- Lead: contact exists and has not been messaged yet. Probability: 5%. Exit: first outbound message sent.
- Engaged: contact has replied at least once. Probability: 15%. Exit: contact answered a qualifying question.
- Qualified: confirmed need, budget, timeline. Probability: 35%. Exit: demo scheduled.
- Demo Booked: demo on calendar. Probability: 55%. Exit: demo completed and proposal sent.
- Negotiation: proposal sent, in active dialogue. Probability: 75%. Exit: signed or lost.
These probabilities feed your weighted forecast on the dashboard. Inflate them and you will under-resource ramp. Deflate them and you will hire too aggressively. After 30 days of real data, the panel suggests updated probabilities based on your actual conversion rates.
Read more: the full pipeline framework (entry/exit criteria, automation triggers, forecasting math) lives in our sales pipeline setup guide.
Step 5: Write your first five message templates
Budget: 5 minutes. Templates are the unit of reusable messaging in CRM Solid. They support merge variables like {first_name}, {company}, and {channel_topic}, plus spintax variation like {Hi|Hey|Hello}, so two contacts never see the same wording.
Go to Templates > New. Write at least these five:
# Template 1: Opener
{Hey|Hi} {first_name|there}, saw you {posted|asked|shared} about
{topic} {today|recently}. We help {persona} ship that in
{timeframe} without {pain_point}. Quick question - are you
{currently|actively} looking for that, or just browsing?
# Template 2: Qualifier
{Good context|Makes sense}, {first_name}. Out of curiosity, what
does your {tooling|workflow} look like right now for {use_case}?
And is {ideal_outcome} on your roadmap this {quarter|month}?
# Template 3: Demo invite
{Great|Awesome}, based on what you shared, a 15-min screen-share
will save you a few hours of reading. Pick a slot:
{calendar_link}. Or send me one that works.
# Template 4: Day-3 follow-up
{Hey|Hi} {first_name}, no rush, just want to make sure
{ideal_outcome} stays on your radar. If timing is off, totally fine
to circle back next month; happy to drop a note in {month_offset}.
# Template 5: Post-demo nudge
{first_name}, {appreciated|enjoyed} the demo {yesterday|today}.
Quick recap: {one_sentence_summary}. Want me to send the proposal
or do you need to loop in {decision_maker} first?Replace the bracketed placeholders with your own copy. Even bad templates are better than improvising every DM, and you will iterate them weekly based on reply-rate data once the sequence is running.
Common pitfalls
- Too many merge variables: if a single message references more than three custom fields, the slightest data gap produces broken output ("Hi , thanks for !").
- Spintax that does not vary meaning:
{Hello|Hi|Hey}is good.{great|amazing|awesome}on every message starts to look like a Mad-Libs game. Use spintax for real lexical variety, not adjectives. - Forgetting the question: every opener should end with a question. No question, no reply.
Step 6: Tune your rate limiter
Budget: 2 minutes. CRM Solid's rate limiter has three knobs: per-hour cap, per-day cap, and minimum-interval-between-sends. The platform defaults (20/hour, 50/day, 10s) are tuned for an account that has been in healthy daily use for 30+ days. Younger accounts need a slower ramp.
Go to Settings > Rate limiter. Pick the row for the account you just connected and set:
- First 7 days: 5/hour, 20/day, 30s minimum interval.
- Days 8-14: 10/hour, 35/day, 20s minimum interval.
- Days 15-30: 15/hour, 45/day, 15s minimum interval.
- Day 30+: 20/hour, 50/day, 10s minimum interval.
The flood-wait handler is automatic regardless of these caps. If Telegram returns a FLOOD_WAIT_X error mid-send, the worker pauses that account for X seconds, retries with exponential back-off, and flags the campaign in your dashboard. You do not need to babysit this.
Deeper dive: the math behind these numbers, including multi-account distribution and Telegram's hidden trust score, is in our bulk messaging best practices guide.
Step 7: Build your first drip sequence
Budget: 3 minutes. Sequences chain together templates with delays and conditional logic. A typical first sequence is a five-step drip targeting a single segment (e.g., "new SaaS founders"). Go to Sequences > New.
- Name and segment: name it descriptively ("Saas-founders-cold-2026q2"). Pick the contact segment as the audience.
- Step 1, Opener: send Template 1 immediately on entry.
- Step 2, Qualifier: send Template 2 only if Step 1 was replied to.
- Step 3, Day-3 nudge: if no reply by day 3, send Template 4. Then exit if still no reply by day 7.
- Step 4, Demo invite: when Qualifier reply contains the keyword "interested" or "yes", send Template 3 with calendar link.
- Step 5, Post-demo nudge: 24 hours after the demo meeting timestamp, send Template 5.
Turn on stop-on-reply at the sequence level. Toggle spintax on for every template. Save as draft.
Before you go live, run a dry run with only yourself as a recipient. Confirm every step fires, every merge variable resolves, every spintax variant looks human. Five minutes of dry-run now saves an embarrassing "Hi , welcome to !" sent to 500 strangers.
Step 8: Launch and monitor
Budget: 2 minutes. Flip the sequence from Draft to Active. The job worker polls the database every 5 seconds, picks up due steps, and sends them through your configured rate limiter.
Watch three places in the panel for the next 30 minutes:
- Sequences > Active > (your sequence) > Live progress, showing queued vs sent vs replied vs failed counts in real time.
- Inbox: every reply lands here with the contact's pipeline stage badge and the sequence step they replied to.
- Analytics > Outreach health: surfaces any flood-wait events, account-level send rates, and the per-step reply rate so far.
A healthy first hour: 5-10 sends, 1-3 replies, zero failures. If you see failures, the most common causes are: the contact's privacy settings block messages from non-contacts (no fix, skip them), telegram_username is wrong (data quality), or rate limits are still warming (wait one hour and retry).
Common pitfalls
- Launching at midnight: Telegram-time matters. If your audience is in the US Pacific timezone, launching from a server in EU at 3 AM Pacific is fine; the rate limiter spreads sends across the day. But your replies will pile up while you sleep.
- No assigned owner: if no rep is set as the contact owner, replies route into a generic "unassigned" tray and may be missed.
- Forgetting to verify the dry-run: always confirm at least one full sequence-through-completion before sending to real contacts.
Your Telegram CRM is live. The next 30 days are about iterating: tighten your templates based on reply data, refine pipeline probabilities based on actual conversion rates, and add a second sender account around day 14 to double your reach without doubling your risk.