Template

MT4/MT5 Dormant Client Reactivation Workflow Map

A fill-in workflow map from MT4/MT5 dormant-account export to segmented call list, AI call, CRM outcome sync and re-deposit tracking for brokerages.

Who it is for
Brokerage ops, retention and CRM leads who own the MT4/MT5 back office and want dormant accounts called without a manual list build every month.
Time to complete
60 minutes

Most brokerages already have the dormant book sitting in MT4 or MT5: accounts with a last login six months back, a balance that never moved, a group that says live. What's missing is a repeatable path from that data to a phone call and back. This map lays out eight steps in order, from the platform export through the CRM join, suppression, segmentation, the AI call and the outcome write-back, with a blank next to every threshold, field name and owner. Fill it in once and the same run works every month, on MT4, MT5 or both.

Step 1: Define dormant in platform terms

Dormant has to be a query, not a feeling. Pick the signals your platform actually stores, set a threshold for each, and write down which one wins when they disagree.

  • Decide which signal defines dormant when they disagree: last closed trade or last login

    A trader who logs in weekly to watch charts but hasn't traded in a year is dormant by one rule and active by the other. Most retention teams use last closed trade for the call list and last login only for segmentation.

  • Set separate thresholds for funded and zero-balance accounts

    A funded account with no trades for 60 days is a different call from an empty one that went quiet 400 days ago. Two thresholds, two lists.

    Funded: ____ days. Zero balance: ____ days

  • Exclude archived accounts unless your CRM still holds a live contact for them

    MT4 and MT5 both move inactive accounts to an archive after a configurable period. Archived logins often have no reachable phone, so pull them only where the CRM record is complete.

  • Write the exclusion list by group name: demo, IB test, staff, partner and any other group that doesn't belong in a retention call

    Excluded groups: ____

  • Record the dormancy definition and the date you set it, so the reactivation rate you measure later means something

    Defined by: ____ on ____

Step 1: Define dormant in platform terms
SignalWhere MT4 stores itWhere MT5 stores itYour threshold
Last loginUser record last-login date (Manager API or admin report export)Account last-access time (Manager or Web API, admin report)No login in ____ days
Last closed tradeClosed orders history, latest close time per loginDeals history, latest close time per loginNo closed trade in ____ days
Last depositBalance operations of deposit type, latest per loginBalance deals of deposit type, latest per loginNo deposit in ____ days
Balance and equityUser balance and equity fieldsAccount balance and equity fieldsSegment at ____ and ____ (base currency)
Open positionsCount of open orders per loginCount of open positions per loginExclude accounts with an open position: yes / no
Account statusGroup name, enabled flag, archived statusGroup, account rights, archived statusInclude groups: ____ Exclude: ____

Step 2: Export the dormant account list

The export is the one step that touches the trading server. Keep it read-only, scheduled, and limited to the fields the workflow needs.

  • Choose the export route: Manager API pull, scheduled admin report export, or your CRM's existing platform sync

    If the CRM already mirrors the platform through a bridge or plugin, use that copy and check its lag. A sync that runs nightly is fine for a monthly campaign. A copy that last refreshed in spring is not.

    Route: ____ Refresh: ____

  • Use a read-only manager login with report rights only, and log every export run

    A retention export never needs trading, balance or group-edit rights. Ask the platform admin for a dedicated login and review its rights every quarter.

  • Pull one row per login, then collapse to one row per client in the next step

    Traders open several accounts. Calling the same person three times because they have three logins is the fastest way to a complaint.

  • Export closed-trade history as a per-login latest close time, not the full order table

    The full history for a mid-size broker runs to millions of rows. The workflow only needs the latest close time and, optionally, the trade count in the last ____ days.

  • Time the export for the same day each month, after the platform's end-of-day rollover

    Export day: ____ Time (server): ____

  • Store the export with a run ID and row count, so a list that shrinks or doubles is caught before it's dialed

    Expected rows: ____ to ____

Step 2: Export the dormant account list
FieldMT4 sourceMT5 sourceNeeded for
Login (account number)User recordAccount recordJoin key to the CRM
NameUser record nameAccount name fieldsMatch check against the CRM
GroupUser groupAccount groupFiltering, currency, account type
CountryUser country fieldAccount country fieldJurisdiction, calling hours, language guess
Last login / last accessUser last-login dateAccount last-access timeDormancy signal
Last closed tradeOrders history, latest close timeDeals history, latest close timeDormancy signal, segmentation
Balance, equity, creditUser balance, equity, creditAccount balance, equity, creditSegmentation, offer eligibility
Registration dateUser registration dateAccount registration dateTenure segment
Phone and emailUser record, often emptyAccount record, often emptyFallback only. The CRM is the source of truth

Step 3: Join to the CRM and enrich

The platform knows the account. The CRM knows the person. Every step after this one depends on the join being right.

  • Join on login to client ID, then keep the most recently active login per client as the account the agent talks about

    The agent should reference the account the trader remembers, not the one opened by accident in 2022.

  • Set the join failure rule: a platform login with no CRM match goes to a review list, never to the dialer

  • Compare the platform name with the CRM name and flag mismatches for a human check

    A mismatch usually means a merged client, a corporate account or an IB sub-account. None of those should get a standard reactivation call.

  • Copy the trader's own numbers onto the record: last deposit amount, current balance, time since last trade

    The call opens with facts the trader recognises. Those facts come from the platform export and need to be on the CRM record before the list goes to the campaign.

  • Record the join yield every run

    Platform rows ____, matched ____, parked ____

Step 3: Join to the CRM and enrich
CRM fieldWhy the call needs itIf it's missing
Client ID (one per person)Collapses several logins to one contactRow is unusable: park it
Phone in E.164 formatThe number that gets dialedRow is unusable: park it
Preferred languageThe agent speaks it from the first sentenceFall back to the country default, flag for review
Country of residenceConsent rules, calling hours, disclosure wordingTake the platform country, flag if the two disagree
KYC / verification statusBlocks any deposit ask on an unverified accountTreat as unverified
Marketing consent and DNC flagDecides whether the call can happen at allTreat as no consent
Assigned account manager or IBRouting for handoffs and IB-owned clientsRoute to the retention desk
Last contact date and channelAvoids calling someone emailed yesterdayAssume none
Open ticket or complaint flagSuppresses the callCheck tickets by client ID before assuming none

Step 4: Suppression and eligibility

Run these checks after the join and before segmentation, in this order. Every removed row gets a reason code so you can report why the list shrank.

  • Remove clients with no marketing consent on file for the calling jurisdiction, and anyone with an internal do-not-call flag

    Under GDPR and the UK regime a dormant client is still a data subject with a right to object. In the US, TCPA and the TSR govern automated and telemarketing calls, and national and state DNC registries apply. Confirm with your compliance officer or counsel which basis you rely on for each country.

    Reason code: NO_CONSENT

  • Screen every number against the relevant national and state DNC registries where you call

    Reason code: DNC_REGISTRY

  • Remove accounts with an open complaint, chargeback, dispute or fraud flag, and anyone under a regulatory hold

    Reason code: OPEN_ISSUE

  • Remove clients contacted by any channel in the last ____ days, unless this campaign is the follow-up to that contact

    Reason code: RECENT_CONTACT

  • Remove IB-owned clients unless the IB has agreed to the campaign in writing

    IB agreements often restrict direct contact with referred clients. Check the agreement as well as the CRM flag.

    Reason code: IB_EXCLUDED

  • Remove clients in any country where you don't hold an approved disclosure script and calling hours

    Reason code: NO_SCRIPT

  • Cap the run at the volume your handoff team can absorb, and hold the remainder for next week

    Max per run: ____

  • Log the count and reason code for every removal, and keep the parked rows for the next run

    Signed off by: ____

Step 5: Segment into call lists

One list, one call goal. The segments below are a starting set. Rename them to your own, but keep each one tied to a single measurable goal.

  • Assign every joined row to exactly one segment, and put the priority order in writing so overlaps resolve the same way each run

    Order: ____

  • Add language and country to each list so the campaign runs the right script and calling hours per list

    Topcalls agents speak 32 languages, but a list with mixed languages still needs the language on each row.

  • Set a per-segment attempt cap and cadence, then hand the cadence to the call cadence template

    Attempts: ____ over ____ days

  • Hold back a control group per segment that gets no call

    Without a control you can't tell reactivation from seasonal noise. Pick a share you can defend and keep it the same across runs.

    Control: ____ %

  • Name the offer, if any, per segment, and get compliance sign-off on it before the list goes live

    Bonuses and deposit incentives sit under FCA financial promotion rules in the UK and MiFID II inducement rules in the EU. Any offer is a review item, not a script default. Confirm with your compliance officer.

Step 5: Segment into call lists
SegmentRule (from the export)Call goalPriority
Funded, recently quietBalance above ____, no closed trade in 60 to 180 daysFind out what stopped them and get one trade or a platform session booked1
Funded, long dormantBalance above ____, no closed trade in more than 180 daysConfirm they still want the account, then the same goal as above2
Withdrawn to zeroBalance zero, last balance operation was a withdrawalLearn why they left; offer a re-deposit path only if compliance has approved it3
Never fundedRegistered more than ____ days ago, no deposit ever, KYC completeRemove the deposit blocker: method, minimum, platform confusion4
Never verifiedNo deposit, KYC incompleteKYC reminder call, not a reactivation pitchRoute to the KYC flow
Demo onlyLive account exists but every trade was on a demo groupHand to the demo-to-funded playbookRoute to the demo flow

Step 6: The AI call

The agent gets the CRM record, the segment, the call goal and a fixed set of outcomes. Nothing else changes between lists except the script.

  • Open with the account facts: the platform, roughly how long since the last trade, and that the balance is still there if it is

    Naming MT4 or MT5 and a real date signals the call is from the broker, not a scam, which is what a dormant trader assumes first.

  • Disclose that the call is automated or AI-assisted in the first sentence where the jurisdiction requires it, and announce recording

    See the AI call disclosure checklist for wording by region. Confirm with your compliance officer.

  • Give the agent one question per segment and one next step, not a menu

    The funded-quiet segment asks what stopped them trading. The withdrawn segment asks what would bring them back. Each answer maps to one outcome code.

  • Forbid three things in every script: quoting expected returns, pressuring a deposit, and discussing another client's results

    These are the phrases that turn a service call into a financial promotion. Have compliance read the script with that lens.

  • Transfer live when the trader asks for a person, mentions a loss dispute, or asks about regulation

    Transfer number: ____ Hours: ____

  • Set the maximum call length per segment before launch

    At $0.35 per minute all-inclusive, a six-minute call costs $2.10. Your own reactivated-account value decides how many minutes a list is worth.

    Max minutes: ____

Step 6: The AI call
Outcome codeMeaningCRM fieldNext action
REACTIVATE_INTENTTrader plans to log in or trade againreactivation_stage = intentSend login help by SMS; check the platform for a login within 7 days
SESSION_BOOKEDPlatform walkthrough or account review bookednext_call_at, ownerHuman or agent session on the date chosen
DEPOSIT_INTENTTrader intends to fund, no blocker namedreactivation_stage = deposit_intentCashier link by SMS; the deposit follow-up flow takes over
BLOCKER_NAMEDNamed a reason: fees, platform, losses, method, trustdormancy_reasonRoute by reason; product or payments review weekly
NOT_NOWWants time, agreed a follow-up datenext_call_atOne call on that date, then email only
CLOSE_REQUESTWants the account closed or funds withdrawnclose_request_atSupport ticket, no further calls
HANDOFFAsked for a person, raised a complaint or a regulatorescalation_ownerLive transfer or callback within ____ hours
NO_ANSWERNo connect after all attemptsattempts_countSMS or email fallback, then park for the next run
DO_NOT_CALLAsked not to be calleddnc_flag = trueSuppress everywhere the same day

Step 7: Sync outcomes back

The call is half the loop. Each outcome has a destination, a field and a timing. Decide them here so the CRM, the platform team and the human desk all see the same thing.

  • Write outcomes through your CRM's native connector or a webhook, not a spreadsheet upload

    Topcalls pushes outcomes, transcripts and recordings to the CRM through Integrations, which connects to 5,000+ tools. A webhook per outcome works where there's no native connector.

  • Map every outcome code to a CRM picklist value before the first call, and reject unmapped codes at the integration layer

  • Suppress DO_NOT_CALL in both the CRM and the campaign list, because the campaign may dial again before the CRM sync runs

  • Run the platform export nightly during the campaign window, so logins, deposits and trades after each call are attributed within a day

    Attribution needs the call date on the CRM record and the platform event date on the same client. The join from step 3 does the rest.

    Attribution window: ____ days

  • Give the retention desk a view filtered to HANDOFF and BLOCKER_NAMED, sorted by balance, refreshed on every sync

  • Send a test batch of five calls through the full loop and check every field landed before scaling the list

    Test batch checked by: ____

Step 7: Sync outcomes back
EventDestinationWhat is writtenWhen
Call completedCRM contact recordOutcome code, summary, recording and transcript link, agent notesWithin a minute of hang-up
REACTIVATE_INTENT or DEPOSIT_INTENTCRM deal or opportunityStage, expected date, source = reactivation_callWithin a minute of hang-up
SESSION_BOOKEDCalendar and account manager taskDate, time, trader timezone, loginImmediately, with a reminder
BLOCKER_NAMEDCRM reason field plus the weekly reportReason category and free textImmediately; reported every Monday
HANDOFFRetention desk queueTranscript, reason, callback windowImmediately
DO_NOT_CALL or CLOSE_REQUESTCRM suppression flag and campaign suppression listFlag and timestampSame day, before the next dial
Platform login after the callCRM reactivation stageFirst login date, days since callNightly, from the platform export
Deposit or trade after the callCRM reactivation stage and campaign reportAmount, date, days since callNightly, from the platform export

Step 8: Re-engagement tracking

Fill this in weekly for each run. The bottom rows decide whether the workflow keeps running.

  • Count a reactivation only on a platform event: a login, a deposit or a closed trade, never on an outcome code

    Intent is what the trader said. Reactivation is what the platform recorded. Report both, and pay attention to the second.

  • Subtract the control group's rate from the called group's rate before you call the difference a lift

  • Take the BLOCKER_NAMED reasons to the weekly product and payments meeting

    If the same reason tops the list three runs in a row, the fix is in the platform or the cashier, not in the script.

  • Recycle NOT_NOW and NO_ANSWER rows into the next run with their attempt history, and drop anyone who has hit the cap

  • Re-check the dormancy definition after the first three runs

    If most reactivations come from the 60 to 120 day band, tighten the threshold so the list reaches traders earlier.

    Next review date: ____

Step 8: Re-engagement tracking
MetricSourceWindowThis run
Dormant accounts exportedStep 2 export row countRun____
Rows matched and eligibleStep 3 join, step 4 suppressionRun____ matched, ____ eligible
Calls placed and connectedCampaign dashboardRun____ placed, ____ connected
Outcomes by codeCRM outcome fieldRunIntent ____ Booked ____ Blocker ____ Not now ____
Logged in after the callPlatform export, last access after the call date____ days____
Deposited after the callPlatform balance operations after the call date____ days____ accounts, ____ total
Traded after the callPlatform closed trades after the call date____ days____
Same three for the control groupHeld-back rows, same windows____ daysLogin ____ Deposit ____ Trade ____
Voice costCall minutes x $0.35Run____
Cost per reactivated accountVoice cost divided by accounts that traded or depositedRun____

How to use this

  1. 1

    Fill step 1 with your platform admin and step 3 with whoever owns the CRM. Both need to agree before the first export.

  2. 2

    Run steps 2 to 4 once by hand and record the row counts at each stage. That's your baseline for spotting a broken export later.

  3. 3

    Paste the outcome codes from step 6 into the CRM as a picklist before any call runs.

  4. 4

    Walk step 4 and the script rules in step 6 with your compliance officer and get a name on each sign-off line.

  5. 5

    Send a five-call test batch through step 7 and check every field, then scale to the first segment.

  6. 6

    Fill the step 8 table each week and review the dormancy threshold after three runs.

Next step

We walk through your MT4 or MT5 export, size the dormant book by segment, map the CRM outcome flow and scope a pilot on one call list.

Book a 30-minute call

Read next

Related resources