Bento on Shopify

Art Lounge runs on Magento, but most stores reading this run on Shopify. Every flow on this site can be built there. Some events arrive out of the box; the rest take a short recipe, and a few need a small relay.

Honest note: we haven’t yet run a test order through Bento’s Shopify app ourselves, so the exact event name it sends is still to confirm. Everything else here comes from Shopify’s and Bento’s own documentation.

What do you need to set up?

  1. Create your Bento account

    Everything below sends events into Bento, so start there. Create your Bento account (30-day trial).

  2. Install Bento’s Shopify app Out of the box

    The app sends purchases to Bento with the order value and items, and keeps each customer’s lifetime spend up to date. That alone covers VIP and the order side of most flows.

  3. Add Bento’s script for views and carts Small recipe

    Product views and cart changes happen in the browser. Add Bento’s script to your theme, or a custom pixel in Shopify’s Customer Events that forwards product_viewed and product_added_to_cart. These only help for visitors Bento already knows, which is normal for every email platform.

  4. Send the rest with Shopify Flow Small recipe

    Shopify Flow’s “Send HTTP request” action (Grow plan and up) can post any event to Bento’s API. Use it for order details with product types, cancellations, new subscribers and native abandoned checkouts. Here is the body for an order, so Liquid in Bento can tell brushes from paint:

    Shopify Flow: Send HTTP request body (POST to Bento’s /batch/events)
    {
      "events": [{
        "type": "$order_details",
        "email":
          "{{ order.email }}",
        "details": {
          "order":
            "{{ order.name }}",
          "total": {{
            order.totalPriceSet
              .shopMoney.amount }},
          "items": [
            {%- for li in
                order.lineItems -%}
            {
              "title": {{
                li.title | json }},
              "type": {{
                li.product.productType
                  | json }},
              "qty": {{
                li.quantity }}
            }
            {%- unless
                forloop.last %},
            {%- endunless -%}
            {%- endfor -%}
          ]
        }
      }]
    }
    

    Use a name like $order_details so it doesn’t double up with the app’s own purchase event.

  5. Handle Indian checkouts and delivery Needs a relay

    If you use Razorpay Magic Checkout, GoKwik, Shiprocket Checkout or Cashfree, Shopify no longer receives their abandoned checkouts. Each of them can send an abandonment webhook instead, and Razorpay’s payment-failed webhook says why a payment didn’t go through. Delivery works the same way: Shiprocket only marks orders fulfilled in Shopify, but its own webhook knows when a parcel arrives. Bento needs these reshaped into its event format by a small relay. I’m building an open-source one; until then, Zapier or Make can do the reshaping.

  6. Add a daily clock Small recipe

    Win-back, second purchase and replenishment start on a date. Bento’s date trigger never fired for us, so a small daily job sends Bento who is due today. Any scheduler that can make an HTTP request works.

Which flows can you build today?

With the app and Flow recipes: welcome, VIP, sunset, cart, browse, second purchase, win-back and replenishment. Checkout abandonment works today on Shopify’s own checkout; with an Indian checkout it needs the relay. Post-purchase works with a day-12 fallback today, and on the real delivery day once delivery events arrive.

Try Bento free