Open dashboardwalletap.com

Infobip

Issue, update and notify Apple and Google Wallet passes from an Infobip Journeys flow, with your own channel step delivering the link.

Web

Walletap publishes three elements for the Infobip Journeys flow builder. Drop one into a journey to issue a wallet pass, update it, or send its holder a notification. Each element hands its result back as flow variables, so the next step — usually your own SMS, WhatsApp, Viber or Email element — can use it.

Paid plans

Walletap creates and hosts the pass, and your journey's own channel step sends the link. Consent, quiet hours and opt-out apply to it exactly as they do to any other message in your Infobip account, and it is billed there as normal traffic.

Before you start#

  • A Walletap account, and you are its owner.
  • A company under SettingsCompanies. The Infobip account is connected per company.
  • At least one template — the loyalty card, membership or ticket each issued pass is built from.
  • An Infobip account with Journeys, and access to Infobip Exchange to install the Walletap app.

How it fits together#

A contact enters the journey
Issue wallet pass
Returns passId and link
Your SMS step sends the link
The customer adds the pass

passId ties the elements together. Issue wallet pass returns it, and Update wallet pass and Notify pass holder take it under the same name, so chaining them needs no renaming.

Set it up#

  1. Create an API key

    In Walletap, go to SettingsAPI keys and click Create. Under What this key can do, choose Manage passes, give the key a label such as Infobip, and click Create.

    The New API key dialog with the Manage passes preset selected and the label Infobip

    Copy the key — it starts with wtap_sk_ and is shown in full only now. Manage passes covers exactly what the elements need: create, update and read passes, read templates, and notify pass holders. It cannot reach billing, team members or account settings.

  2. Install the Walletap app in Infobip

    In Infobip, open Exchange, find Walletap and install it. There is nothing to configure at this step.

  3. Connect your Infobip account to Walletap

    Back in Walletap, go to SettingsIntegrations. Under Messaging, the Infobip row for the company reads Walletap's shared sender. Click Connect, then approve the connection in Infobip.

    The Messaging group with an Infobip row and its Connect button

    You return to Integrations with Your Infobip account is connected., and the row reads Your own Infobip account. Journeys checks the template you picked when you activate a campaign, and this connection is what lets Walletap answer that check.

  4. Add an element to a journey

    Open a Journeys flow. Issue wallet pass, Update wallet pass and Notify pass holder are listed under the Walletap app. Drag one onto the canvas.

  5. Paste the key and pick the template

    Paste the key into the element's Walletap API key field. On Issue wallet pass and Update wallet pass, the Pass template field then lists your templates by name. Bind the other fields to contact attributes as you would on any element.

Every element has its own Walletap API key field, so paste the same key into each one. The key is an ordinary Walletap key: it is listed under SettingsAPI keys, and disabling it there stops the elements straight away without affecting anything else.

The three elements#

Each element runs once for every contact that reaches it, and answers before the journey moves on. Every element returns a true-or-false result to branch on, and a failure message when something goes wrong.

Issue wallet pass#

Creates a pass from one of your templates and returns the link where the recipient adds it to their wallet.

FieldNeededWhat it does
Walletap API keyYesThe key from step 1
Pass templateYesThe template the pass is built from, picked by name
Recipient emailStored on the pass so you can find the person later. Walletap sends nothing to it.
Recipient phoneStored on the pass, the same way. Walletap sends nothing to it.
Name shown on the passWritten into the template's name field
Your own reference (optional)Your ID for this person — a CRM ID or member number. A later journey can find the pass by it.
OutputVariableType
Pass was issuedissuedBoolean
Pass IDpassIdString
Pass link — send this to the customerlinkString
Failure messageerrorString
Failure reasonreasonString
HTTP statusstatusCodeNumber

reason is set when your Walletap plan stops a new pass, so a journey can tell a plan limit from a broken key. See If something goes wrong.

Update wallet pass#

Changes a pass someone already holds. The change reaches the wallet the pass is in.

FieldNeededWhat it does
Walletap API keyYesThe same key
Pass ID (from Issue wallet pass)This or your referenceThe passId an earlier Issue wallet pass returned. Simplest when both are in one journey.
Your own reference (alternative to Pass ID)This or Pass IDFinds the pass by your reference. Use it with Pass template when the pass was issued in another journey or system.
Pass template (needed with Your own reference)With your referenceThe template the pass was issued from. A reference is unique only within a template.
Name shown on the passWritten into the template's name field
OutputVariableType
Pass was updatedupdatedBoolean
Pass IDpassIdString
Your own referenceexternalIdString
Failure messageerrorString
HTTP statusstatusCodeNumber
Notify pass holder#

Sends a notification to the holder of one pass, on Apple Wallet or Google Wallet. You do not need to know which wallet the person uses.

FieldNeededWhat it does
Walletap API keyYesThe same key
Pass ID (from Issue wallet pass)YesThe pass to notify. This element reaches one pass at a time, so a journey running once per contact sends one message per contact.
Notification titleYesThe headline
Notification messageYesThe body. Links in it become tappable.
Show notification from (optional, ISO 8601)When it starts showing on Google Wallet. Defaults to now. Apple Wallet holders are alerted when the step runs.
Show notification until (optional, ISO 8601)When it stops showing. Defaults to 24 hours later.
OutputVariableType
Notification was sentsentBoolean
Pass IDpassIdString
Failure messageerrorString
Why it was not sentcodeString
HTTP statusstatusCodeNumber

sent: true means the wallet accepted the notification for that pass — a confirmation of delivery to the wallet, not of someone reading it. When sent is false, code says why:

  • no_registered_devices — the pass is on no device right now, so there was nobody to alert. The message is kept on the pass and shows if it is added again.
  • unchanged_message — that exact title and message are already on the pass, so nothing changed and no alert was raised. Change the wording to notify again.

Branch on sent so the journey carries on for these contacts instead of treating them as failures.

Blank fields#

A field left blank, or bound to a contact attribute that is empty, is skipped, so it never wipes a value already on the pass. Zero and false are real values and are written.

Example: a loyalty card from opt-in to first message#

Harbour Coffee runs the Coffee Card, ten stamps for a free coffee. They already use Infobip for SMS, and a journey starts when a customer opts in at the till. The customer's profile carries firstName, phoneNumber and the CRM's memberNumber.

  1. Issue the pass

    Add Issue wallet pass. Pick Coffee Card in Pass template, bind Recipient phone to {{person.phoneNumber}}, Name shown on the pass to {{person.firstName}}, and Your own reference to {{person.memberNumber}}.

  2. Branch on issued

    When issued is true, carry on. When it is false, route to an internal alert that includes error and reason, so a plan limit reaches a person instead of failing quietly.

  3. Save the link to a flow variable

    A later step can use an element's output only once it is bound to a flow variable. In the element's outputs, choose link and create a variable — for example passLink, type String, with the default value left empty. Check that the output row then reads link → passLink. Do the same for passId if a later step will update or notify this pass.

  4. Send the link

    Add an ordinary SMS element on Harbour Coffee's own sender, and insert the passLink variable into the text — for example, Your Coffee Card is ready. Add it to your phone: followed by the link.

Later, when a member updates their name in the CRM, a second journey runs Update wallet pass with Your own reference set to {{person.memberNumber}} and Coffee Card as the template. It finds the same pass without anyone having stored its ID.

Tip

Leave a flow variable's default value empty. The element writes the real value for each contact; a default would hand every contact the same link.

If something goes wrong#

Every element returns error with its status, so the message in the journey's execution log is the first thing to read.

"This campaign has no action elements. Add at least one action … before activating." Journeys counts the Walletap elements as data steps, not actions. Add the channel step that sends the link — every real journey needs one anyway. On a bare test flow, an Update person element that sets any attribute is enough.

"Exchange integration element has an invalid selected option: templateId" when you activate. Walletap could not confirm the template for your Infobip account. Connect your Infobip account under SettingsIntegrationsMessaging (step 3 above) for any company on the account, then reopen the step, pick the template again and save.

401 — "That Walletap API key is not valid." The key is mistyped, disabled, or does not exist. Create a new one with the Manage passes preset and paste it again, checking for a stray space at either end. Paste it into every element.

403 — "This API key cannot issue passes / update passes / send notifications." The key is valid but was created with a narrower preset, such as Read only. Use a Manage passes key.

402, with reason set. Your Walletap plan stopped a new pass:

reasonMeaning
free_capThe free plan's passes are all used
trial_capThe trial's passes are all used
trial_expiredThe trial has ended
subscription_inactiveThe subscription is not active, for example after a failed payment
active_customers_pausedThe account went over its monthly active-customer allowance, and new cards are paused

Resolve it under SettingsBilling. Because reason is machine-readable, a branch on it can alert someone the moment it happens.

The Pass template list is empty. The list is loaded with the key in the field above it. Fill in Walletap API key first, then reopen Pass template. If it is still empty, check that the account has a template and that the key uses the Manage passes preset.

A template you just created or renamed is missing from the list. Infobip's step editor loads the list once, when it opens. Close the step editor and open it again.

Update wallet pass returns 400 — "Identify the pass to update". Neither way of finding the pass arrived. Usually Pass ID is bound to a variable that is empty at that point, or Your own reference was sent without Pass template.

Update or Notify returns 404. The pass was not found on this Walletap account. Check that Pass ID carries the passId an earlier step returned, and that Pass template is the one the pass was issued from. For Notify, the message can also say the pass has not been added to Google Wallet yet.

502 — "Walletap could not be reached. The flow can retry this step." A network failure between Infobip and Walletap. Retry the step. If it keeps happening, contact support with the journey name and the time of the run.

The pass was issued, but a name does not appear on it. Name shown on the pass fills the template's name field. If the template has none, the value is stored but has nowhere to show. Add a name field to the template — see fields.

The customer never received the link. If issued is true and link came back, the pass exists and the problem is in the delivery step. Check that the link variable is bound into the message text, and that the contact was not held back by consent, opt-out or quiet hours.

Next steps#