Choose a delivery method

Scheduled delivery, triggers and "display when" events, optimal time, quiet hours and more delivery options for messages

When you compose a message, you'll have to choose how and when to deliver it to your users.

616

Here are all of the delivery options based on the most common use cases. Keep in mind that regardless of the delivery type, each message will only be delivered to users that fit your message's target audience.

Delivery typeUse case
Immediate“I want to send a message right away.”
Scheduled“I want to send a message on October 2nd, 2017.”
Triggered“I want to send users a message after they do something specific in the app.”
Triggered locally“I want to send users a push notification after they enter a geofence.”

Note: Locally triggered push notifications do not work with our Quiet Hours feature. This is because the send is controlled by the local trigger, and not Leanplum's servers.
Manual“I want to bypass Leanplum’s automated delivery options and use a server-to-server call to trigger a message.”
Display when (In-app messages only)"I want this message to show as soon as the user opens the app."

📘

Different types of messages have different delivery options.

Push notifications, emails, and inbox messages are sent directly from Leanplum's servers, which gives them delivery options like immediate, scheduled, and optimal time.
In-app messages are pre-loaded onto the user's device, so they must be sent after a "Display when" event, like "User starts app."

Immediate

Available for push notifications, email, app inbox messages and webhooks.

Sends the message when you click “Send Now”. Some messages may take up to 15 mins for us to process and send to your users, depending on server load.

Scheduled

Available for push notifications, email, app inbox messages and webhooks.
You can also schedule delivery at a specific date and time. You can choose between four possible timing/timezone options:

679

Our timezone is PST, which is why Pacific time is an option. See "Your timezone" for more details.

  • User’s timezone: Users will receive the message at the scheduled time as defined by their own timezone.
  • Your timezone (see Pacific in above image): Users will receive the message at the scheduled time in the timezone where you created the Leanplum message (i.e., if you create the message from a GMT+3 timezone, the dropdown menu will show "GMT+3 time").
  • UTC time: Users will receive the message at the scheduled time as defined by UTC (Coordinated Universal Time).
  • Optimal Time: The message will send a unique time for each user, based on the time of day the user is typically most active in your app.

🚧

Getting started with Optimal Time

Users who don't have previous session data (such as newly-imported users) may not receive Optimal Time messages, since Leanplum won't have enough data to calculate their Optimal Time.

To avoid message send failures:
*
Contact your CSM to set a default timezone for users with 0 sessions.

  • Schedule campaigns with UTC Time for the first month you use Leanplum.

See more on how optimal time is calculated

Triggered

*Available for all message types in Leanplum. Trigger event options appear under “Display when” for in-app messages.

  • You can trigger a message based on user activity instead of scheduling a fixed delivery time. This is a great way to reach users at the right moment, since delivery will be relative to their activity in your app. Available triggers are based on the events tracked by our SDK, including the custom events and states you track.
    When using "triggers when parameter value is", the parameter name must be an exact match - it is case sensitive. The parameter value is case insensitive - for example, it will match both "My Value" and "my value".

Trigger options

TriggerTiming
User first starts appFires when a first-time user starts the app. (This trigger is not available for in-app messages.)
User starts appFires when any user starts the app and a new session begins.
User starts or resumes appFires when a user starts the app and a new session begins OR when a user resumes activity after backgrounding the app within the same session.
User triggers event Send the message when the event occurs, regardless of parameter values.
User triggers event when parameter Send the message when the event occurs AND an event parameter is a certain value.
User advances to state triggersSend the message when the State changes, regardless of parameter values.
User advances to state triggers when parameterSend the message when the State change occurs AND a State parameter is a certain value.
User attribute changesSend the message when a certain attribute changes, regardless of what it changes to or from.
User attribute changes toSend the message only when a user attribute changes to a certain value.
User attribute changes from/toSend the message only when a user changes from a certain value (A) to another specified value (B).

❗️

Recursive triggers are not supported

Messages will not trigger on the occurrence of one of the message's own events. For example, if you had a triggered push message named "Looping Message", the triggers "Event Looping Message Sent" and "Event Looping Message Open" are not valid options for the delivery of this message. Including those triggers will not cause the message to be sent again each time it sends / is opened.

Advanced trigger options

570
TriggerTiming
User triggers event when parameter is greater than / less than Send the message when the user triggers an event with a parameter value greater than or less than the value you select.
User triggers event when parameter contains Send the message when the user triggers an event with a parameter value that contains some.
User advances to state when parameter is greater than / less than Send the message when the user advances to a state with a parameter value greater than or less than the value you select.
User advances to state when parameter containsSend the message when the user advances to a state with a parameter value that contains some value.
User attribute changes to greater than / less than Send the message when the user attribute value changes to something greater than or less than the value you select.
User attribute changes to contain Send the message when the user attribute value changes to something that contains the value you select.
Send message before/after time based event parameterMore information here.

Delay

You can delay a message's delivery by a certain number of seconds, minutes, or days after the trigger occurs.

Exclusions

You can exclude certain users from receiving a triggered message. The options are the exact same as the trigger options (User starts app, User triggers event, etc.). Just use the "unless" option in your message's delivery to set an exclusion.

For example, you can create an onboarding message that will be delivered to users 5 days after the user first starts app unless the user completes their profile (user triggers event > profileComplete).

1204

Limits

You can limit the number of times a triggered message is sent to the same user. For example, you could set a message to display when user starts app, with a limit of "Up to 1 time ever". This ensures that even if the user meets the delivery criteria multiple times, they will not receive the message more than you intend.

Triggered Locally

Available for push notifications only.

Use this method if you need trigger multiple push notifications during the same session, or for geofence triggers. You can send a push notification to a user when:

  • User enters custom region
  • User exits custom region
  • User starts app
  • User triggers event
  • User advances to state
  • User attribute changes

To use this feature, your app must include the Leanplum SDK Location library. For more info, see Message users when they enter or exit a geofence region.

🚧

One locally triggered push at a time

If you trigger two locally triggered push notifications at the same time (same event and same delay), only one will display to your end user. To ensure both messages show, make sure the delay setting for each message is different (e.g. First message delay 1 second and second message delay 2 seconds after the trigger.)

Manual

Available for push notifications, email, app inbox messages and webhooks.

You can choose to deliver the message manually via our sendMessage API call.