Soulpapamarketing’s Branding & Marketing Story.
Why Ad Optimization Gets Contaminated When Pixels Are Shared Across Multiple Malls
Many D2C brands operate multiple sales channels beyond their main mall: sub-malls, experience stores, and event-specific domains. A common mistake in early setup is embedding the same Meta pixel code across all domains as-is.
The pixel functions normally, and events flow in. The problem lies in the ad optimization layer. When an ad set is configured for “purchase optimization,” the Meta algorithm uses all Purchase events from that pixel as learning signals. Even if buyers from sub-mall A and the main mall B have completely different products, price points, and purchase journeys, the algorithm treats them as a single “buyer” pool.
If you’re running a sub-mall-dedicated campaign, the situation is even worse. The ad set learns from main mall buyer patterns while finding audiences unrelated to actual sub-mall buyers. Ad spend gets executed, but sub-mall conversions approach zero. In practice, campaigns operating in this state often show thousands of pixel events flowing in but single-digit attributed conversions.
Cross-Domain fbclid Loss — The Exact Point Where Attribution Breaks
The second problem is fbclid (Facebook Click ID). When a user clicks a Meta ad, an fbclid parameter is appended to the URL. This value must be passed back to Meta’s system through the pixel for clicks and purchases to match precisely. It’s the critical link in attribution.
The problem occurs when domains change. The moment a user moves from the main mall to a sub-mall domain, the fbclid parameter disappears from the URL. Browsers don’t preserve query strings when navigating to external domains. From this point forward, sub-mall purchases are not linked to that ad click.
Even if the Ads Manager shows “0 purchases,” users may have actually arrived through that ad and completed checkout on the sub-mall. Attribution is broken because fbclid was lost. Making decisions based on performance in this state causes you to repeatedly disable campaigns that are actually working.
Solution 1 — Cross-Domain fbclid Linking Code
The cross-domain fbclid problem is solved two ways.
Method A: Explicitly Pass fbclid in Links
When creating cross-domain navigation links, extract the fbclid value from the current URL and insert it into the destination URL.
// Extract fbclid from current URL and insert into cross-domain link
function appendFbclid(targetUrl) {
const urlParams = new URLSearchParams(window.location.search);
const fbclid = urlParams.get('fbclid');
if (!fbclid) return targetUrl;
const url = new URL(targetUrl);
url.searchParams.set('fbclid', fbclid);
return url.toString();
}
// Example application — apply to all links navigating to sub-mall
document.querySelectorAll('a[href*="subdomain.co.kr"]').forEach(link => {
link.href = appendFbclid(link.href);
});
Method B: Meta Pixel crossDomain Setting
Enable the crossDomain option when initializing the pixel. This makes Meta’s pixel recognize both domains as a single session.
fbq('init', 'PIXEL_ID', {}, {
crossDomain: {
enabled: true,
domains: ['maindomain.co.kr', 'subdomain.co.kr']
}
});
Applying both methods is most stable. Explicit fbclid passing preserves the parameter at the browser level, while crossDomain settings keep the pixel maintaining session continuity.
Solution 2 — Separating Mall-Specific Purchase Data Using Meta Custom Conversions
fbclid linking solved the tracking connection. However, the ad set optimization contamination problem remains. As long as the entire pixel’s Purchases are used as the optimization event, the algorithm cannot distinguish between the two malls’ buyers.
Custom Conversion is the solution. Custom conversions add URL conditions or parameter conditions to pixel events, aggregating only specific conversions independently. You can create a custom conversion that counts only Purchase events from sub-mall domain purchase completion URLs.
When this custom conversion is set as the ad set’s optimization event, the algorithm learns only sub-mall buyer patterns. Even if thousands of main mall purchases flow into the pixel, they don’t affect sub-mall campaign optimization.
Path to create custom conversions in Meta Ads Manager:
Events Manager → Custom Conversions → Create Custom Conversion → Event: Purchase → URL Condition: Include sub-mall domain
Custom conversions don’t activate immediately after creation. They activate only after receiving at least one Purchase event meeting the condition, and can then be selected as an ad set’s optimization event. After sufficient data accumulates (50+ weekly), switching the ad set’s optimization is favorable for learning stability.
Solution 3 — Reinforcing Pixel Gaps with Server-Side CAPI Integration
Browser pixels alone have data gaps. With iOS 14+ privacy policies, browser cookie blocking, and ad-blocking extensions, 20-40% of actual purchases aren’t captured by the pixel.
Conversions API (CAPI) sends conversion events directly from the server to Meta. Because it bypasses the browser, it’s unaffected by ad blocking or cookie issues.
import requests
import hashlib
def send_purchase_to_capi(pixel_id, access_token, event_data):
url = f"https://graph.facebook.com/v19.0/{pixel_id}/events"
payload = {
"data": [{
"event_name": "Purchase",
"event_time": event_data['timestamp'],
"event_source_url": event_data['url'],
"action_source": "website",
"event_id": event_data['order_id'], # For pixel deduplication
"user_data": {
"em": hashlib.sha256(event_data['email'].lower().encode()).hexdigest(),
"ph": hashlib.sha256(event_data['phone'].encode()).hexdigest(),
"client_ip_address": event_data['ip'],
"client_user_agent": event_data['user_agent'],
"fbc": event_data.get('fbc_cookie'), # _fbc cookie value (fbclid-based)
"fbp": event_data.get('fbp_cookie'), # _fbp cookie value
},
"custom_data": {
"value": event_data['amount'],
"currency": "KRW",
"order_id": event_data['order_id'],
}
}],
"access_token": access_token
}
return requests.post(url, json=payload).json()
If a sub-mall sells subscription products, CAPI importance is even higher. Recurring charges happen server-to-server through payment gateways without the user’s browser. The pixel can never capture this event. CAPI is the only path to deliver subscription charges to Meta’s ad system.
When running pixels and CAPI simultaneously, you must set event_id to the same order number. When Meta receives the same event_id from both, it automatically removes duplicate counts.
Complete Data Structure — 1 Pixel + N Mall Custom Conversions + CAPI Synergy
Combining all three solutions creates the following structure.
Brand Pixel (1)
├── Main Mall Purchase → Entire pixel aggregation (brand ROAS monitoring)
├── Sub-Mall A Purchase → Custom Conversion A (sub-mall A campaign optimization event)
└── Sub-Mall B Purchase → Custom Conversion B (sub-mall B campaign optimization event)
Server-Side CAPI
├── Main Mall Checkout → CAPI Send (event_id deduplicates with pixel)
└── Sub-Mall Subscription → CAPI Send (browser-less payment = CAPI required)
fbclid Cross-Domain
└── Main Mall → Sub-Mall Navigation maintains fbclid → Attribution connected
The essence of this structure is unified collection, separated analysis.
A single brand pixel collects data from all malls. This unified data is used for brand-wide funnel analysis, Lookalike audience seed building, and retargeting. Simultaneously, custom conversions independently aggregate mall-specific purchases, allowing precise optimization event specification per campaign. As a result, even without splitting pixels, each mall’s campaign learns independently from that mall’s buyer patterns. CAPI reinforces browser gaps, improving the quality of learning signals for the algorithm. The more malls you operate, the larger the audience data accumulated in the brand pixel, and this becomes the Lookalike foundation for each sub-mall’s new campaigns. Operating multiple malls becomes data asset expansion rather than merely channel separation—a structure where the whole works synergistically.
Main Mall and Sub-Mall Are Not Separate — Why Integration and Separation Are Simultaneously Necessary
One misconception needs clarification. Separating mall-specific data via custom conversions doesn’t mean operating the two malls as completely independent businesses. It’s the opposite.
Main mall and sub-mall exist within the same brand universe. Users who first encounter the brand through the main mall move to sub-mall specialty products, and new customers who purchase from the sub-mall first cross-purchase into the main mall’s different lineups. The two malls’ buyer data aren’t completely separate groups—they’re a spectrum of the same customer base experiencing the brand through different touchpoints.
This is where the true value of multi-mall structure lies. Because one brand pixel collects integrated data from both malls, you can use main mall visitors as Lookalike seeds for sub-mall campaigns. It’s also possible to use the sub-mall buyer pool as a retargeting audience for the main mall—cross-application impossible with separated pixels.
Yet collection integration alone isn’t enough. Unless ad set optimization events are separated, the algorithm mixes the two malls’ purchase signals and finds wrong audiences for each campaign. Unless fbclid cross-domain links are connected, the actual movement paths between malls disappear from attribution. Even with unified data, if it’s not separated by mall in the analysis layer, everything becomes noise.
Organic synergy emerges when fbclid cross-domain linking and custom conversions work together. When the fbclid from an ad click starting on the main mall extends through to a sub-mall conversion, the algorithm learns the entire journey from main mall exposure to sub-mall purchase as a single conversion path. As custom conversions independently aggregate only sub-mall purchases, this learning signal aligns precisely with sub-mall buyer patterns. CAPI reinforces browser gaps, raising the completeness of this signal.
Ultimately, the main mall’s audience asset becomes the learning foundation for sub-mall campaigns, and sub-mall purchase signals elevate the quality of the entire brand pixel. The reason maintaining one pixel while using custom conversions for separated analysis isn’t just technical setup—it’s about simultaneously realizing integration and separation. Achieving both is the core of multi-mall data structure and the foundation for explosive ad synergy.
Frequently Asked Questions
Can I operate multiple shopping malls with one Meta pixel?
Yes. However, using the entire pixel’s Purchase events directly as the ad set optimization event contaminates algorithm learning by mixing multiple malls’ buyer data. You must create mall-specific custom conversions and separately specify optimization events per campaign so each campaign learns the correct buyer patterns.
Why does fbclid disappear when moving between domains?
Browsers don’t automatically preserve URL query strings when navigating to external domains. When the fbclid parameter is lost, the attribution link between the ad click and purchase breaks, causing actual purchases to show as “0 conversions” in Ads Manager. Solve this by extracting fbclid with JavaScript and inserting it into navigation links, or by configuring the pixel’s crossDomain setting.
Why must CAPI be used alongside pixels?
iOS 14+ policies and cookie blocking cause browser pixels alone to miss 20-40% of actual purchases. CAPI sends events directly from the server to Meta, so it’s unaffected by browser environment. Especially for subscriptions where payment happens server-to-server without a browser, conversion tracking is impossible without CAPI. When running both pixels and CAPI, set event_id to the same order number to prevent duplicate counting.
Can custom conversions be used as ad set optimization events immediately after creation?
No. After creating a custom conversion, it activates only after receiving at least one Purchase event meeting the condition. Once activated, it can be selected as an ad set’s optimization event. Switching the optimization event after sufficient data accumulates (50+ weekly) is favorable for learning stability. An initial learning phase occurs after the switch, so timing selection should be strategic.
Related Articles
Insights from Soulpapa Marketing — Korea’s digital marketing agency.
Original Korean article: https://soulpapa.co.kr/2026/06/05/meta-pixel-multi-mall-custom-conversion-capi/
