In-app content blocks

In-app content blocks let you display campaigns within your mobile apps that blend seamlessly with your overall app design. Unlike in-app messages that appear as overlays or pop-ups demanding immediate attention, in-app content blocks show inline with your app's existing content. They enrich the user experience without being too intrusive.

You can use content blocks in two formats:

  • Static content blocks: Display a single message that doesn't change.
  • Carousels: Rotate various messages within a single block.

Create placeholders in your app

Setting up content blocks takes 2 steps:

  1. Your developer defines placeholder IDs: They create placeholder views in your mobile app code with unique IDs.
  2. You configure campaigns: You use those same placeholder IDs when setting up campaigns in Bloomreach Engagement.

Once your developer sets up the placeholders, you don't need their help anymore. You can manage everything through the Bloomreach Engagement app.

Choose placeholder behavior

When you have a placeholder but no active campaigns for it, 2 things can happen:

  • Collapsed placeholder: The placeholder disappears and takes up no space when empty. It can also resize automatically based on content. This works for both static blocks and carousels.
  • Fixed placeholder: The placeholder keeps its space even when empty. This might create blank areas in your app.

Your developer chooses which behavior to use when they set up the placeholder.

When to use in-app content blocks

Share personalized content

  • Target users with relevant offers based on what they do.
  • Show product recommendations while they browse.

Target and test promotions

  • Display special offers to specific user groups.
  • A/B test different promotional messages.

Guide new users

  • Help new users learn app features.
  • Show helpful tips at the right moments.

Build content blocks

Static content blocks

Static blocks show one message that stays the same. They work well for important announcements or permanent offers.

Carousels

Carousels rotate different messages in one block. They're perfect for showing multiple offers without using extra screen space. Each carousel item can redirect to different URLs since they're separate campaigns.

When setting up the SDK, specify whether you want static blocks or carousels. For carousels, create a UI component called CarouselInAppContentBlockView.

For developer setup details, refer to Android or iOS SDK documentation.

Create templates

To find different templates or a blank template, go to Campaigns > In-app personalization.

🚧

Important

Templates marked as Native are only available as In-app messages, not In-app content blocks.

All other templates or blank templates can display in the Visual Builder (default) or HTML Builder.

Visual builder

The visual builder has a drag-and-drop editor. You can create and change templates without coding.

HTML builder

The HTML builder lets you customize HTML for your content blocks. Always test your HTML on real devices before launching to make sure it works across different devices.

Follow these HTML rules:

  • Use standard HTML and CSS only. Don't use experimental features.
  • Don't use the following HTML tags: head, script, link, iframe, meta, title, and body.
  • Don't use these attributes: onclick, href, and other inline JavaScript attributes.

Choose personalization type

Once you've chosen your preferred way of building your campaign, choose which type of in-app personalization you want to create - In-app message (default) or in-app content block (available in the drop-down menu on the left).

Configure settings

Fill in the campaign settings. Content blocks have one extra field compared to in-app messages: Placeholder ID: Enter the exact placeholder ID that your developer created in the mobile app. You can add multiple IDs if you want the campaign to show in different placeholders.

Name your placeholder IDs logically instead of using random characters. The system tracks placeholder IDs as event properties, so clear names help with analytics.

Make content blocks clickable

To make content blocks redirect users somewhere, add buttons or action buttons to your design. Set them up with:

  • Hyperlinks: For web URLs that open in browsers.
  • Deeplinks: For directing users to specific screens in your app or other apps.

This approach ensures proper tracking and smooth user navigation.

Handle multiple content blocks

If you create multiple content blocks for the same placeholder ID, the one with higher priority shows. If they have the same priority, the system picks one randomly.

Remove close buttons

When you switch from an in-app message template to an in-app content block, the Close button (X) stays in the template. Here's what happens:

  • The close button appears in your content block.
  • When users tap it, we track a close event, but the content block stays visible.
  • If you set the content block to show "until interaction," it won't appear again after users tap the close button.

📘

Pro tip

Remove close buttons from content block templates since users can't actually close them.

The CSS images and custom fonts from recent SDK versions are also supported.

Load content blocks

You can tell the SDK to fetch specific placeholders when it starts up. This makes sure they're ready to show when needed.

You can also fetch content for one placeholder anytime while the SDK runs. This gets the latest updates, like changes based on what users do during their session. For more information, review our Mobile SDK documentation.

Track events and data

Each in-app message shown to a customer is tracked as a banner event with the same attributes as in any weblayer. It includes the same data as other campaigns, plus these mobile-specific details:

AttributeDescriptionExample
app_versionThe version of the mobile app2.21.3
device_modelThe device modeliPhone
device_typeThe type of devicemobile
os_nameOperating system nameiOS
os_versionOperating system version17.2
placeholderPlaceholder ID where the block showedexample_top
platformPlatform usediOS
sdkMobile SDK nameExponea iOS SDK
sdk_versionMobile SDK version2.21.3
typeType of banner shown ('in-app message' or 'in-app content block')in-app content block

Error messages

If an error occurs while delivering an in-app message to a customer's device, the banner event will have an additional attribute error with an error message as value.

You may encounter the following error messages:

Error messageDescription
"Invalid action definition"User clicked a link that's not in our predefined actions
"Invalid HTML or empty"The HTML is wrong or missing, or an image couldn't be processed

If you see these errors often, there might be a problem with how the Mobile SDK is set up in your app.

Best practices

Images

  • Use an image file format supported by the target platform or platforms.
    • GIF, JPEG, PNG are natively supported by both Android and iOS.
    • WebP and HEIC are newer formats that aren't supported on some Android and iOS versions.
  • Use an appropriate image size and aspect ratio.
    • Don't use images larger than needed. Large images slow down delivery and use more bandwidth.
    • Make sure image dimensions match your content block design. Wrong dimensions get scaled down automatically but waste bandwidth.

Screen resolutions

Some common screen resolutions:

  • 1284×2778: Found on high-end iOS devices like the iPhone 14 Pro Max.
  • 1440×3200: Found on premium Android devices like the Samsung Galaxy S series.

The Mobile SDKs track device and OS information. Use this data to see what devices your users have.

Limitations

Links in buttons

To add a data-link attribute (which is required for links to work in our SDK) the button or link needs to have a URL filled. When the URL isn't filled, the editor won't generate an <a> tag and the data-link attribute will be missing. This means you need to fill in both the URL and the data-link attribute with the same value.

Performance recommendations

When using personalized content blocks (with customer profile or catalog data), preload fewer than 10 content blocks. Load more on demand for better performance.

Follow these limits:

  • Use fewer than 10 content blocks per placeholder.
  • Don't show the same content block more than once every 5 seconds on one device.
  • Keep each content block under 100kB.

Tracking behavior without consent

If users don't grant tracking consent, we can't track their interactions with content blocks. However, the SDK stores this information locally on their device. This means:

  • Content blocks still follow their display rules (like "show once" or "until interaction").
  • If the local data gets cleared, the content block may show again.
  • This can happen when you call IdentifyCustomer or Anonymize functions, or if events aren't sent fast enough. This behavior may also occur if tracked events aren't sent to the system in a timely manner (for example, due to manual event flushing) or if there are rapid track and identifyCustomer calls.

For detailed setup instructions, check our Mobile SDK documentation.

In-app content blocks generate events similar to banners and weblayers, so your analytics stay consistent across all engagement channels.