Retry Strategies
Not every call connects on the first try. Retry strategies tell Gomobile how to handle failed calls—whether to try again, when, and how many times.
Why retries matter
Phone calls fail for many reasons:
Busy signal
No answer
Network issues
Voicemail (when you need a human)
Temporary phone problems
Without retries, these contacts are lost. With smart retries, you can significantly improve your connection rate.
Strategy types
Gomobile supports three retry strategies:
none
One-shot notifications, testing
fixed_delay
Most campaigns, predictable timing
scheduled
Specific time windows, compliance requirements
No retries
The simplest option—each contact gets one call attempt:
Use this when:
You're testing a flow
The message isn't time-sensitive
You'll handle retries externally
One attempt is all you need
Fixed delay retries
Retry failed calls after a consistent delay:
How it works:
First attempt fails
Wait 30 minutes
Second attempt (retry 1)
If that fails, wait another 30 minutes
Third attempt (retry 2)
If that fails, wait 30 minutes
Fourth attempt (retry 3)
If that fails, contact marked as failed
With maxRetries: 3, a contact gets up to 4 total attempts.
Choosing delay times:
5-15 min
Urgent messages, short campaigns
30-60 min
Standard campaigns
120+ min
Less urgent, spread throughout day
Scheduled retries
Retry at specific times:
How it works:
First attempt (at program start time) fails
Next attempt at 2025-01-20T14:00:00Z
If that fails, next attempt at 2025-01-21T10:00:00Z
If that fails, next attempt at 2025-01-22T16:00:00Z
If that fails, contact marked as failed
The number of dates equals the number of retry attempts.
When to use scheduled retries:
Different times of day might work better
Spreading attempts across multiple days
Compliance requirements (max calls per day)
Specific business hours
What triggers a retry?
Retries happen when a call fails to connect meaningfully. This includes:
Busy
Yes
No answer
Yes
Voicemail (with AMD)
Configurable
Rejected
Yes
Network error
Yes
Human answered, flow completed
No
Human answered, flow error
Depends on error
Successful calls (human answered and flow completed) don't retry.
Retry behavior with pause windows
Retries respect pause windows. If a retry is scheduled during a pause window:
The retry waits until the pause window ends
Then it proceeds with the call
This ensures you don't accidentally call during inappropriate times.
Monitoring retry progress
Track retries through the execution counters:
contactsPending includes contacts waiting for retry. As retries process, they move to completed or failed.
Call reports and retries
The call report API shows all attempts for a contact:
This helps you understand:
How many attempts were needed
What outcomes occurred
Time between attempts
Strategy recommendations
Standard campaigns
Three total attempts, one hour apart. Balances persistence with respect.
Urgent notifications
Five total attempts, 15 minutes apart. More aggressive for time-sensitive messages.
Multi-day campaigns
Morning and afternoon attempts over two days.
One-shot with external handling
No retries. Export failed contacts and handle them through another process.
Best practices
Start conservative - 2-3 retries is usually enough
Space them out - Avoid overwhelming recipients
Respect time zones - Schedule retries during reasonable hours
Monitor results - Track if retries actually help
Consider the message - Urgent = more retries, routine = fewer
Use pause windows - Combine with retries for best results
Common mistakes
Too many retries - Annoying and may get numbers flagged
Too short delays - Recipient situation won't change in 5 minutes
Ignoring time zones - Retries at 3 AM don't help
No pause windows - Retrying during lunch hours
Related topics
Programs - Setting retry strategies
Executions - Monitoring retry progress
Pause Windows - Controlling when retries happen
Last updated

