> ## Documentation Index
> Fetch the complete documentation index at: https://help.lobyco.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Prompts

> Build a prompt inside a campaign: the pop-up message customers see in your app, with its buttons, audience and dates.

A prompt is a pop-up message that customers see in your app. This page shows you how to create one in a campaign and publish it.

> [!NOTE]
>
> A prompt always belongs to a campaign. Open the campaign first, or [create one](/business-documentation/campaigns/create-a-campaign).

## Add a prompt to your campaign

You can add a prompt in the campaign's **List** view or on its [orchestration canvas](/business-documentation/campaigns/orchestration-canvas). Either way, the **Create Prompt** form opens.

Add it on the canvas when a flow should decide who sees the prompt and when. A **Preferred store** prompt needs this, because it reads each customer's suggested store from the block before it. [Recipients](/business-documentation/communication/triggering) explains how a flow decides who gets a communication, and when.

**In the list**

1. Go to **Campaigns** and open the campaign the prompt belongs to, or [create a new one](/business-documentation/campaigns/create-a-campaign).
2. Select **Add activities**, or **Add activity** if the campaign already has some.
3. On the **Select an activity** page, point at the **Prompt** tile and select **From scratch**. To start from a saved prompt instead, select **From template**. [Reuse with templates](/business-documentation/campaigns/reuse-with-templates) explains how.

**On the canvas**

1. Go to **Campaigns** and open the campaign the prompt belongs to, or [create a new one](/business-documentation/campaigns/create-a-campaign).
2. Select **Orchestration** at the top.
3. In the **Block library**, drag a **Prompt** block from the **Activity** group onto the canvas.
4. Double-click the block. **Create Activity** opens.
5. Select **From Scratch**. To start from a saved prompt instead, select **From Template**. [Reuse with templates](/business-documentation/campaigns/reuse-with-templates) explains how.

Once you've saved the form, connect the block to its flow and select **Save** at the top right of the canvas. Connect it before you publish the prompt, because you can't connect or disconnect it after that. When another block connects into the prompt, the flow decides who gets it, and its **Segmentation** changes. [What changes in the form](/business-documentation/communication/triggering#what-changes-in-the-form) explains how.

![The Create Prompt form before a type is picked. Details has an empty Name, Background color #00000000, an empty Text color and an empty Analytics identifier. Type has an empty What type of campaign do you want to create? field, and there's no Message content panel yet. Segmentation has All selected, with Audience below it. Schedule shows Start date 2026/11/02 00:00 and End date 2026/11/29 23:00, filled in from the campaign. Save and Publish are greyed out.](https://mintcdn.com/lobyco-4c9fb3ad/WYxSmfbwe1zr5xYw/images/prompt-01-create-prompt-form-before-a-type-is-picked.png?fit=max\&auto=format\&n=WYxSmfbwe1zr5xYw\&q=85\&s=1e0f568871ac0b6a10f6dbb77eb89520)

*The Create Prompt form before a type is picked*

## Fill in the details

| Field | What it does |
| - | - |
| **Name** | Names the prompt in the portal. Required. Up to 100 characters. |
| **Background color** | Sets the colour behind the prompt. Required. It starts as *#00000000*, which is see-through. Pick a colour, or type a hex code such as *#E8E8E8*. An 8-digit code also sets how see-through the colour is. |
| **Text color** | Sets the colour of the headline and body text. Optional. Use a 3- or 6-digit hex code. Leave it empty and the text keeps your app's own colour. A colour you set in **Body text** itself wins over it. |
| **Analytics identifier** | Identifies the prompt in your analytics. Required. Up to 300 characters. |

Once you've saved the prompt, its ID shows at the top of **Details**, with a copy icon.

## Choose the prompt type

Under **Type**, open **What type of campaign do you want to create?** and pick a type. The type decides what the prompt does for the customer and which fields the form adds.

| Type | What the customer gets | What it changes on the form |
| - | - | - |
| **Regular** | A message with up to two buttons. Each button can take the customer to a place in the app or to a web page. | Adds a navigation choice under each button you name. See [Write the message](#write-the-message). |
| **Preferred store** | A suggestion to change their preferred store. If they accept, the suggested store becomes their preferred store. If they decline, nothing changes. | Adds **Select field with suggested store id**. Makes **Decline button text** required and **End date** optional. You can't choose where its buttons go. |

Changing the type clears the image, the suggested store field and any button navigation you've set. The headline, body and button texts stay.

**Select field with suggested store id** lists the details the prompt gets from the block connected before it. Pick the one that holds each customer's suggested store. The list stays empty until the prompt's block is connected after a block that passes on customer details. That block has to pass on each customer's suggested store. Connect it on the canvas and select **Save**, then open the prompt again. [Block reference](/business-documentation/campaigns/orchestration-canvas/block-reference#what-can-connect-to-what) shows which blocks those are.

## Write the message

The **Message content** panel appears once you've picked a type. Fill in at least one of **Image**, **Headline text** and **Body text**.

| Field | What it does |
| - | - |
| **Image** | Shows a picture in the prompt. Upload a .png, .jpeg, .jpg, .svg, .bmp or .gif file of up to 2 MB. Select **Crop image** to trim it after you upload it. |
| **Headline text** | Sets the title of the prompt. Up to 60 characters. |
| **Body text** | Holds the main message. Use the toolbar to format it. Up to 5,000 characters, and formatting counts towards that. |

When the prompt's block is connected after a block that passes on customer details, you can add those details to **Body text**. Type `{` and pick one from the list. It shows in the text in braces, such as `{CustomerId}`, and each customer sees their own value. See [Personalise a triggered communication](/business-documentation/communication/triggering#personalise-a-triggered-communication).

**Preview** shows the prompt as you build it.

Then name the buttons.

| Field | What it does |
| - | - |
| **Approve button text** | Names the button a customer selects to say yes. Up to 255 characters. On a **Preferred store** prompt, this is the button that changes their store. |
| **Decline button text** | Names the button a customer selects to say no. Up to 255 characters. Required on a **Preferred store** prompt. |

A **Regular** prompt needs at least one of the two. As soon as you name a button, pick where it takes the customer:

* **In-app navigation** opens a place in your app. Pick it under **Choose from list**. See [Deeplinks](/business-documentation/communication/deeplinks).
* **Navigate to external URL** opens a web page. Enter a full address that starts with `http://` or `https://`.

If you clear a button's text, its navigation is cleared too.

![The Create Prompt form scrolled down to the Message content panel of a Regular prompt, with the side menu on the left and Cancel, Save and a greyed-out Publish at the bottom. The Image upload field is empty. Headline text reads Coffee week is on, and Body text reads 2 for 1 on hot drinks in a text editor with a formatting toolbar. Approve button text reads See the offers, with In-app navigation selected under it and a Choose from list field for the deeplink. Navigate to external URL is below it. Decline button text reads Not now, with In-app navigation and Navigate to external URL both unselected. The Preview below the fields shows the headline and body text at the top, and a See the offers button above a Not now button at the bottom.](https://mintcdn.com/lobyco-4c9fb3ad/WYxSmfbwe1zr5xYw/images/prompt-02-message-content-for-a-regular-prompt.png?fit=max\&auto=format\&n=WYxSmfbwe1zr5xYw\&q=85\&s=ddcd985ef67a6df98e8159aa5e32c587)

*Message content for a Regular prompt, with the preview below it*

## Choose who sees it

In **Segmentation**, pick who the prompt is for:

* **All** shows it to every customer.
* **Audience** shows it to the customers in the audiences you pick. See [Segments and Audiences](/business-documentation/audiences-and-data).

When the prompt's block is connected on the canvas, the flow decides who gets the prompt. **Segmentation** then shows **Customer**, already picked, and you can't change it. To pick **All** or **Audience** instead, disconnect the block before you publish the prompt. While it's connected, the form also adds **Validity period of prompt**, for how many days each customer sees it. [What changes in the form](/business-documentation/communication/triggering#what-changes-in-the-form) explains both.

## Set the schedule

Customers can see the prompt between its **Start date** and **End date**. If the campaign has dates, both start as them, and both have to stay inside them. The end date has to be later than the start date. A **Preferred store** prompt doesn't need an end date. [Lifecycle](/business-documentation/communication/lifecycle) explains what happens on each date.

## Save or publish

* **Save** keeps the prompt as a draft. You only need **Name** and **Type** for that. Customers don't see drafts.
* **Publish** asks you to confirm first. If the start date is still ahead, the prompt becomes active on that date. Otherwise it goes live as soon as you confirm.

You'll know it worked when the prompt shows in the campaign's **List** view as **Scheduled** or **Active**. [Lifecycle](/business-documentation/communication/lifecycle) explains what you can still change after that.

## Troubleshooting

> **Why is Publish greyed out?**
>
> Something required is still empty or not valid. Look for red text under the fields. The ones people miss most often are **Analytics identifier** and the navigation choice under a **Regular** prompt's button.

If none of these answers your question, contact Lobyco support. Send them the campaign's name and the prompt's ID, from the top of **Details**.

## Related

* [Add an activity](/business-documentation/campaigns/create-a-campaign#add-an-activity) — adding the prompt in the **List** view or on the canvas
* [Recipients](/business-documentation/communication/triggering) — how a flow decides who gets a communication, and when
* [Lifecycle](/business-documentation/communication/lifecycle) — the statuses a prompt moves through after you publish it
* [Deeplinks](/business-documentation/communication/deeplinks) — picking a place in your app for a button to open
* [Block reference](/business-documentation/campaigns/orchestration-canvas/block-reference) — the blocks that can come before a prompt on the canvas
* [Reuse with templates](/business-documentation/campaigns/reuse-with-templates) — saving a prompt as a template, and what a copy keeps


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.