How to Set Up a 2-Step Order Form with Order Bumps in GoHighLevel

by Fahim

Throwing a full credit card form at visitors the second they hit your checkout kills conversions. A 2-step order form fixes this by capturing their name and email in step one before asking for payment details on step two.

Adding an order bump to that second step is the easiest way to lift average order value (AOV) on your funnels. I set these up regularly across client sub-accounts. HighLevel makes the base element simple enough, but getting your product bindings, custom CSS, abandoned cart triggers, and fulfillment workflows to play nicely together without silent errors takes a very specific setup order.

Close-up view of an online order bump configuration and checkout summary screen
Close-up view of an online order bump configuration and checkout summary screen

Step 1: Create Main Products and Bump Products in Sub-Account Payments

Before touching the funnel builder, both products must exist in your sub-account’s payment catalog. If you don’t define them here first, they won’t show up in your funnel step settings later.

  1. Head to Payments > Products in your sub-account.
  2. Click + Add Product.
  3. Name your core offer (for example, Agency Blueprint Course).
  4. Pick your product type (Digital Goods, Physical, or Service).
  5. Set the pricing: choose One-Time or Recurring, set the currency, and enter the amount ($97.00).
  6. Save it, then repeat the exact same process for your bump offer (e.g., Resource Toolkit & Templates for $27.00).

If you’re using dynamic copy or localized pricing across funnels, see how to use custom values in GoHighLevel.

Step 2: Attach Products to Your Funnel Step

With both products created, you need to bind them directly to the funnel step hosting your order form. This is where most people get tripped up by forgetting the bump toggle.

  1. Go to Sites > Funnels and open your funnel.
  2. Select the checkout step where the form lives.
  3. Click the Products tab in the top navigation bar of that step.
  4. Click + Add Product.
  5. Select your primary product, pick its price, and hit Save.
  6. Click + Add Product again for the bump item.
  7. Select your bump product from the dropdown.
  8. Toggle Order Bump to ON.

That toggle tells HighLevel’s 2-step form element to render the product as an optional checkbox on step two instead of a standard radio option.

Step 3: Configure the 2-Step Order Form Element

Open your checkout page in the funnel builder. Add a 2-Step Order component by clicking Add Element and dragging 2-Step Order onto your canvas.

Click the element to open the settings panel on the left. You’ll see General and Advanced tabs. Here’s how I configure both steps:

Step 1 Settings (Contact Information)

  • Headline: Use actionable micro-copy like Where should we send your login details?
  • Form Fields: Keep friction minimal. Full Name, Email, and Phone Number. Turn off Company Name and Shipping Address unless you’re shipping physical goods.
  • Button Text: Replace the generic Go To Step #2 with something clear like Proceed to Payment →.

Step 2 Settings (Payment & Order Bump)

  • Headline: Use a clear callout like Complete Your Enrollment.
  • Order Bump Section: Turn on the Enable Order Bump switch.
  • Bump Headline: Write a benefit-driven title (e.g., Upgrade: Add the Complete Swipe File).
  • Bump Description: Give a 1–2 sentence summary of what they get and why it matters right now.

If you need custom fields saved during checkout, check out our guide on how to map form submission data to custom fields in GoHighLevel.

Step 4: Style the Order Bump Box with Custom CSS

The default HighLevel order bump box looks flat and blends into the background. Adding a distinct dashed border, a subtle background tint, and a highlighted checkbox makes a noticeable difference in take rates. Open Settings > Custom CSS in your funnel editor and drop this in:

Add this custom stylesheet to target the bump container and highlight checkbox:

/* HighLevel 2-Step Order Bump Custom Styling */
.order-bump-container { border: 2px dashed #f59e0b !important; background-color: #fffbeb !important; border-radius: 8px !important; padding: 16px !important; margin-top: 15px !important; transition: all 0.2s ease-in-out !important;
} .order-bump-container:hover { border-color: #d97706 !important; box-shadow: 0 4px 12px rgba(245, 158, 11, 0.15) !important;
} .order-bump-container .bump-headline { font-weight: 700 !important; color: #92400e !important; font-size: 15px !important;
} .order-bump-container .bump-description { font-size: 13px !important; color: #4b5563 !important; line-height: 1.4 !important; margin-top: 6px !important;
} /* Highlight pulsing tag on the bump box */
.bump-badge { display: inline-block; background: #dc2626; color: #ffffff; font-size: 11px; font-weight: 800; padding: 2px 8px; border-radius: 4px; text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 6px;
}

This swaps the bland gray box for an amber-bordered card that grabs the user’s attention right before they submit payment.

Step 5: Capture Abandoned Carts from Step 1 Submissions

The real architectural perk of a 2-step form: the second a prospect submits Step 1, HighLevel creates or updates their contact record in your CRM—even if they close the tab on Step 2 without paying.

As noted in the official HighLevel 2-step order element documentation, Step 1 triggers an Order Form Submission event with an incomplete payment state.

Here’s how to build your cart abandonment workflow:

  1. Go to Automation > Workflows and click Create Workflow > Start from Scratch.
  2. Add trigger: Order Form Submission.
  3. Add filters: In Funnel = [Your Funnel Name], Page = [Your Checkout Step], and Submission Type = Opt-In. (Step 1 counts as Opt-In; completed checkouts count as Sale).
  4. Add a Wait step for 15 to 30 minutes.
  5. Add an If/Else condition: Check if the contact purchased the offer (check for your core customer tag or an Order Submitted event).
  6. Under the No branch, send an SMS or email with a direct link back to your checkout step.

If you’re routing funnels through custom domains, verify your proxy settings with our guide on connecting Cloudflare custom domains to GoHighLevel.

Step 6: Build the Purchase Fulfillment & Order Bump Split Workflow

When someone buys on Step 2, they might purchase just the main product, or both the main product and the bump. You need your workflow to handle fulfillment conditionally.

Don’t build separate workflows for each product. Use a single workflow with an If/Else branch instead:

  1. Create a workflow called Fulfillment – Core Offer & Bump.
  2. Add Trigger: Order Submitted.
  3. Filter: In Funnel = [Your Funnel Name] and Status = Success.
  4. Add Action: Add Contact Tagcustomer: core-offer.
  5. Add Action: Grant course access or send the core welcome email.
  6. Add an If/Else branch named Took the bump?
  7. Branch condition: Order Details > Products > Includes > [Your Bump Product Name].
  8. Under Yes: Tag them customer: bump-offer, grant access to the bump asset, and send the bump fulfillment email.
  9. Under No: Leave it empty or trigger an upsell nurture sequence.

If your backend pushes orders to an external service or database, check out our guide on sending authenticated webhooks with custom headers in GoHighLevel.

Here’s the webhook payload structure when both products go through a clean checkout:

{ "event_type": "order_submitted", "funnel_id": "fn_k8x932jsd0923", "contact": { "id": "cnt_9834710293", "first_name": "Alex", "email": "alex@example.com", "phone": "+15550192834" }, "order": { "status": "paid", "currency": "USD", "total_amount": 124, "items": [ { "product_id": "prod_main_97", "name": "Agency Blueprint Course", "price": 97, "is_bump": false }, { "product_id": "prod_bump_27", "name": "Resource Toolkit & Templates", "price": 27, "is_bump": true } ] }
}

Step 7: Testing the Checkout in Stripe Test Mode

Don’t run live traffic until you’ve verified both payments and workflow branches using the standard Stripe test cards documentation.

  1. In your sub-account, head to Payments > Integrations and make sure your gateway is set to Test Mode.
  2. Open your checkout URL in an Incognito window.
  3. Fill out Step 1 with a test email and click Proceed to Payment.
  4. On Step 2, check the order bump box. Make sure the total updates dynamically (e.g., $97 to $124).
  5. Use test card details: 4242 4242 4242 4242, any future date (12/28), and CVC 123.
  6. Complete the purchase and verify you land on the thank-you page.
  7. Check the contact record in your CRM: verify that both customer: core-offer and customer: bump-offer tags were applied in the workflow execution logs.

Gotchas and Edge Cases to Avoid

I’ve run into a few edge cases that cause order bumps to fail silently. Watch out for these:

  • Currency Mismatch: If your core product is set to USD and your bump product was accidentally created in CAD or EUR, HighLevel simply hides the bump checkbox on Step 2 to avoid gateway errors. Double-check your currency settings on both products.
  • Subscription vs. One-Time Setup: If mixing recurring subscriptions and one-time bump offers, make sure your Stripe account has Customer Portal and SetupIntents enabled so recurring profiles attach cleanly without authentication failures.
  • Aggressive CDN Caching: When you update prices or flip bump toggles in the backend, always test with ?version=2 or clear your cache. HighLevel aggressively caches product JSON payloads across its CDN edge nodes.

Frequently Asked Questions

Can I add more than one order bump to a 2-step order form?

Natively, the standard 2-step order element supports one primary bump. You can bind multiple bump products to the funnel step, but managing and styling multiple checkboxes cleanly requires custom JavaScript or an external checkout app routed through webhooks.

Does Step 1 fire if the user closes the browser before paying?

Yes. The moment someone submits Step 1 and clicks the button to reach Step 2, HighLevel sends the contact data to your CRM. You can catch these immediately using the Order Form Submission trigger with an Opt-In filter for abandoned cart recovery.

Can I use PayPal for 2-step order form order bumps?

Yes, as long as PayPal is connected via HighLevel’s native gateway integration. Stripe is still more reliable when dealing with multi-item dynamic totals and post-purchase upsell redirects.

How do I pre-fill contact details if the user already opted in on page 1?

Pass contact parameters through the URL query string (like ?email={{contact.email}}&name={{contact.name}}) from your opt-in step to the checkout page. HighLevel will auto-populate matching fields on Step 1.

Next Steps

Once your 2-step form is capturing contacts and converting bumps, make sure your post-purchase messaging is dialed in. Check out our walkthrough on how to insert and test merge fields in GoHighLevel email and SMS templates to automate your onboarding sequences.

all_in_one_marketing_tool