← back to Shopify Sample Shipping
repilot-sample-profile.mjs
23 lines
import {query} from './query.mjs';
const SAMPLE_PROFILE='gid://shopify/DeliveryProfile/96764067891';
const S=['gid://shopify/ProductVariant/44090076954675','gid://shopify/ProductVariant/44086096756787','gid://shopify/ProductVariant/44044973408307'];
const mut=`mutation($id:ID!,$profile:DeliveryProfileInput!){deliveryProfileUpdate(id:$id,profile:$profile){profile{id} userErrors{field message}}}`;
const rq=`query($items:[DraftOrderLineItemInput!]!){draftOrderAvailableDeliveryOptions(input:{lineItems:$items,shippingAddress:{address1:"15442 Ventura Blvd",city:"Sherman Oaks",provinceCode:"CA",countryCode:US,zip:"91403"}}){availableShippingRates{title price{amount}}}}`;
const items=S.map(v=>({variantId:v,quantity:2}));
const sleep=ms=>new Promise(r=>setTimeout(r,ms));
console.log('associating 3 sample variants to the dedicated sample profile...');
const a=await query(mut,{id:SAMPLE_PROFILE,profile:{variantsToAssociate:S}});
if(a.deliveryProfileUpdate.userErrors.length){console.log('ASSOCIATE ERR',JSON.stringify(a.deliveryProfileUpdate.userErrors));process.exit(1);}
let ok=false, rates=[];
for(let i=1;i<=6;i++){
await sleep(15000);
try{ rates=(await query(rq,{items})).draftOrderAvailableDeliveryOptions.availableShippingRates; }catch(e){ rates=[]; }
const free=rates.some(x=>parseFloat(x.price.amount)===0);
console.log(` t+${i*15}s: ${rates.length} rate(s)${free?' incl FREE ✅':''} -> [${rates.map(r=>r.title+' $'+r.price.amount).join(' | ')||'NONE'}]`);
if(rates.length>0){ ok=true; if(free) break; }
}
console.log('\nROLLBACK: dissociating the 3 pilot variants back to General...');
const d=await query(mut,{id:SAMPLE_PROFILE,profile:{variantsToDissociate:S}});
console.log('dissociate errors:',JSON.stringify(d.deliveryProfileUpdate.userErrors));
console.log('\nPILOT RESULT:', ok? (rates.some(x=>+x.price.amount===0)?'WORKS — dedicated profile returns a FREE sample rate':'returns rates but no free tier'):'STILL BROKEN — zero rates from the dedicated profile');