PunchOut enables enterprise customers to shop from their procurement systems (SAP Ariba, Coupa, etc.) and automatically see their negotiated pricing on your Shopify store - without logging in or leaving their procurement workflow.
How It Works
Procurement System Redirect
Enterprise buyer clicks "Shop Now" in their procurement system (SAP Ariba, Coupa, etc.). The system redirects to your Shopify store with a special fromIdentity parameter:
https://your-store.com?fromIdentity=AN01234567890
Widget Captures Identity
The Weevio widget automatically:
- Detects the
fromIdentityparameter in the URL - Stores it in browser sessionStorage (12-hour expiration)
- Resolves it to the matching Shopify customer via tag lookup
Customer Pricing Applied
The widget displays the customer's negotiated pricing throughout their browsing session:
- Product pages show "Your Price"
- Pricing persists across page navigation
- No login required
Cart Return to Procurement
When ready to purchase, the cart data is sent back to the procurement system where the order is created using the negotiated pricing.
Setup Instructions
Note:
Prerequisite: The fromIdentity tracker script must be installed on your Shopify theme for PunchOut to work. This script runs on all pages to capture the fromIdentity parameter when customers arrive from their procurement systems.
Step 1: Install Tracker Script in Shopify Theme
The tracker script must be added to your Shopify theme to capture the fromIdentity parameter on all pages.
Navigate to Theme Editor
In your Shopify admin:
- Go to Online Store → Themes
- Find your active theme
- Click Actions → Edit code
Open theme.liquid File
In the left sidebar under Layout, click on theme.liquid to open the main theme file.
Add Tracker Script to Head Section
Find the </head> closing tag in the file (usually around line 100-200). Just before the </head> tag, add this script:
<!-- Weevio PunchOut Tracker -->
<script src="https://cloud.weevio.co/ecommerce-widget/fromIdentity-tracker.js" defer></script>
Example placement:
...other head content...
<!-- Weevio PunchOut Tracker -->
<script src="https://cloud.weevio.co/ecommerce-widget/fromIdentity-tracker.js" defer></script>
</head>
Save Changes
Click the Save button in the top right corner. The tracker script is now active on all pages of your store.
Note:
What does the tracker do? This lightweight script (less than 1 KB) monitors the URL for the fromIdentity parameter on every page load and stores it in the browser's sessionStorage. This allows the pricing widget to identify the customer even as they navigate between pages.
Step 2: Understand FromIdentity Formats
The fromIdentity parameter is appended to your store URL by the procurement system. The Weevio widget recognizes these formats (case-insensitive):
PunchOut formats:
PunchOut Buyer:[customer_id]PunchOut_Buyer:[customer_id]
SAP Ariba formats:
SAP Ariba Buyer:[customer_id]SAP_Ariba_Buyer:[customer_id]Ariba Buyer:[customer_id]Ariba_Buyer:[customer_id]
Character restrictions:
- Maximum length: 50 characters
- Allowed characters: Alphanumeric, hyphens, underscores, colons, spaces
- Automatically sanitized for security
Example URLs:
https://your-store.com/products/laptop?fromIdentity=AN01234567890
https://your-store.com/collections/all?fromIdentity=AN01234567890
https://your-store.com?fromIdentity=AN01234567890
Step 3: Tag Customers in Shopify
For PunchOut to work, you must tag each enterprise customer in Shopify with their fromIdentity value.
Navigate to Customer in Shopify Admin
Go to Customers in your Shopify admin and open the customer record for the enterprise buyer.
Add FromIdentity Tag
Add a customer tag that matches the fromIdentity value their procurement system will send. Use one of the approved formats:
Recommended format:
Ariba Buyer: AN01631249352
Alternative formats:
SAP Ariba Buyer: AN01234567890
PunchOut Buyer: AN01234567890
Note:
The tag must exactly match the fromIdentity value sent by the procurement system (excluding prefix flexibility for spaces vs. underscores).
Assign Customer to Price List
Ensure the customer is assigned to the appropriate B2B price list in Shopify. This price list determines the negotiated pricing they'll see.
Example customer configuration:
| Customer Name | Tag | Price List | Price Code Tag |
|---|---|---|---|
| ACME Manufacturing | Ariba Buyer: AN01631249352 | Enterprise Tier (20% off) | Price Code: ACME_20_OFF |
| Regional Healthcare | SAP Ariba Buyer: AN01631249352 | Contract Pricing | Price Code: REGIONAL_HEALTH |
| Tech Distributor - Division A | PunchOut Buyer: AN01631249352 | Distributor Tier 1 | Price Code: TECH_DIV_A |
Step 4: Test Your Configuration
Create a Test URL
Build a test URL using your actual fromIdentity value:
https://your-store.com?fromIdentity=AN01631249352
You can test on any page - home, product, or collection pages.
Open Test URL in Browser
Navigate to your test URL. The widget should automatically capture the fromIdentity parameter.
Verify in Browser Console
Open browser developer tools (F12) and check the console:
// Check if fromIdentity was captured
sessionStorage.getItem('weevio_fromIdentity')
// Should return: "AN01631249352"
// Check if it resolved to a customer
sessionStorage.getItem('weevio_fromIdentity_customerId')
// Should return: "gid://shopify/Customer/123456789"
Verify Pricing Display
Navigate to a product page. You should see:
- "Your Price" displayed (if customer has negotiated pricing)
- The correct discounted price for this customer
- Pricing persists when navigating to other products
Common testing issues:
- FromIdentity not captured: Check that the URL parameter is spelled correctly (
fromIdentity, notfromidentity) - Customer not resolved: Verify the customer tag in Shopify exactly matches the
fromIdentityvalue - Pricing not showing: Ensure the customer is assigned to a price list with active pricing rules
- Session expired: Sessions last 12 hours - clear sessionStorage or use a fresh browser tab to retest
Technical Details
Session Behavior
Storage method: Browser sessionStorage (per-tab isolation)
Session lifetime:
- Duration: 12 hours from initial capture
- Persistence: Survives page navigation within the same browser tab
- Expiration: Automatic after 12 hours or when browser tab is closed
Multi-page persistence:
Once fromIdentity is captured on the first page, it persists throughout the browsing session. Customers can navigate to any page without needing the fromIdentity parameter in every URL.
Multiple tabs: Each browser tab maintains its own session. Different enterprise buyers can shop simultaneously in different tabs without conflict.
Supported Procurement Systems
The Weevio widget supports any procurement system that can append a fromIdentity parameter to redirect URLs, including:
- SAP Ariba - Leading enterprise procurement platform
- Coupa - Cloud-based spend management
- Oracle iProcurement - Oracle's procurement solution
- Jaggaer (SciQuest) - Procurement and supply chain platform
- Basware - Purchase-to-pay automation
- Ivalua - Procurement and spend management
- Custom procurement portals - Any system supporting URL parameters
Widget Configuration
No special widget configuration is required - fromIdentity detection is automatic and enabled by default.
Troubleshooting
Tracker Script Not Installed
Symptoms: Nothing happens when visiting a URL with fromIdentity parameter
Solutions:
- Verify the tracker script is added to theme.liquid in the
<head>section - Check that the script URL is correct:
https://cloud.weevio.co/ecommerce-widget/fromIdentity-tracker.js - Clear browser cache and reload the page
- Check browser console for script loading errors (404 errors)
- Ensure the theme changes were saved and published
FromIdentity Not Detected
Symptoms: sessionStorage shows null for weevio_fromIdentity
Solutions:
- First, verify tracker script is installed (see above)
- Verify URL contains
?fromIdentity=parameter (check spelling) - Ensure JavaScript is not blocked by browser extensions
- Check that the parameter value is under 50 characters
- Verify allowed characters only (alphanumeric, hyphens, underscores, colons, spaces)
Customer Not Resolved
Symptoms: sessionStorage shows fromIdentity but not customerId
Solutions:
- Verify customer exists in Shopify
- Check customer tag exactly matches the fromIdentity value
- Ensure tag uses an approved prefix format (e.g., "Ariba Buyer: ...")
- Verify tag has no extra spaces or typos
Pricing Not Displayed
Symptoms: Customer resolved but no "Your Price" shown
Solutions:
- Confirm customer is assigned to a B2B price list
- Verify the price list has active pricing rules for the product
- Check browser console for API errors
- Ensure B2B pricing feature is enabled in Weevio settings
Session Expired
Symptoms: Pricing worked earlier but not anymore
Solutions:
- Check if more than 12 hours have passed since initial visit
- Clear sessionStorage and revisit with
fromIdentityparameter - Open a fresh browser tab and start a new session
- Verify customer hasn't been untagged or removed from price list
For additional help, see the Troubleshooting Guide.
Next Steps
Need Help?
For assistance, please send a message to our Support page.