COD NinaHelp center
Free to read. No sign-in needed.
COD NINA SUPPORT

How can we help?

Find clear answers and illustrated setup guides.
From your first order to your next shipment.

FREQUENTLY ASKED QUESTIONS

All topics

Browse answers or follow a setup guide.

34 answers
What should I set up first?
  1. Open Form designer and review your fields, text and appearance.
  2. Check your delivery regions and shipping options in Settings.
  3. Add the COD form to your product template and save the theme.
  4. Place a test order, then check its details in the app and in Shopify.

Pixels, email marketing and Google Sheets are optional. You can configure them when you need them.

Link to this answer
How do I add the COD form to my store?
  1. Open Form designer and save your form settings.
  2. Select Add to theme, then Open theme editor.
  3. Place the COD form on the relevant product template and save your theme.
  4. Visit a product that uses this template and check the form.

If the form is already installed, manage the existing block instead of adding another one.

Link to this answer
How should I check my first order?

On your storefront, check the selected product, quantity, currency and shipping charge before submitting the form.

Then open the app’s order management page and compare the customer details, items and total with the order created in Shopify. A test submission can create a real order; handle that order appropriately after checking it.

Link to this answer
Can I customize the form fields and language?

Use Form designer to adjust the available fields, labels, button text and appearance. Review the content for the storefront languages you use, then save and preview the result.

The app’s admin language and your storefront content language are separate settings.

Link to this answer
Where do I configure delivery regions and shipping fees?

Open Settings and review the delivery countries and shipping options. Check the name and fee for each option and confirm which option should be selected by default.

Before accepting orders, test an address in each region you serve and verify the displayed currency and shipping charge.

Link to this answer
Why is the COD form missing from a product page?
  1. Check that you edited the currently published theme.
  2. Confirm that you saved the COD form block and that it is visible.
  3. Check the product template assigned to the product. It must include the form block.
  4. Open the product page again and check the result.

Changing the form’s design does not, by itself, add a block to your theme.

Link to this answer
How do I export orders for my shipping provider?
  1. Open order management and select the orders you want to prepare for shipping.
  2. Select Export orders.
  3. Choose or create a template that matches your provider’s required columns.
  4. Review the export and download it as CSV UTF-8 or Excel (.xlsx).
  5. Import the file into your provider’s ERP and keep the original shipment file for tracking updates.
Link to this answer
Can each shipping provider have a different template?

Yes. Configure the column names, order and mapped order fields for each template. Custom fields, such as shipping method or customs product name, can use a default value or stay blank for your shipping team to fill in.

Keep the shipment reference field so tracking updates can be matched later. If your provider does not accept tracking columns, add them to the original file after importing it into the ERP.

Link to this answer
How do I import tracking numbers using my exported file?
  1. Keep the original shipment reference in the file downloaded from Export orders.
  2. Fill in the tracking number and, if available, the carrier and tracking URL.
  3. Open Import tracking numbers and upload the completed CSV or XLSX file.
  4. Review the detected columns. If a column cannot be identified, select its meaning manually.
  5. Check the preview and confirm the updates.

Blank tracking rows are skipped. Customer addresses, products and order amounts are not updated by this import.

Standard return columns are tracking_number, tracking_company and tracking_url. Keep shipment_ref unchanged.

Link to this answer
Which file formats and sizes can I upload?

Upload a UTF-8 CSV or Excel (.xlsx) file, up to 5 MB, with at most 2,000 data rows and 100 columns.

For Excel, use a worksheet named orders. If there is no worksheet with that name, the workbook must contain only one worksheet. Older .xls files are not supported.

Link to this answer
Does importing tracking automatically fulfill orders in Shopify?

No. Importing tracking saves the details in the app first. Review and submit the pending Shopify sync tasks separately.

Check the task results afterwards. If a task fails, review the reported reason before trying again.

Link to this answer
Does COD Nina create shipments through carrier APIs or track delivery events?

This workflow uses files: export your shipment data, import it into your shipping provider’s ERP, then return the tracking numbers to COD Nina.

Direct carrier ERP API integration and carrier delivery-event tracking are not part of this release. A saved tracking number does not mean that live carrier delivery events are being retrieved.

Link to this answer
How do I connect Google Sheets?
Illustrated setup guide

Keep an operational order overview in a spreadsheet with the columns you choose. You need a Google account that can edit the destination file.

No Google API key is needed from you. COD Nina manages its OAuth application and Picker configuration. The Maps API key is for address suggestions only.

1. Sign in and select a file

Open Integrations → Google Sheets → Connect Google. Choose your account, review the permissions and continue. Then choose an existing spreadsheet or create a new one.

Annotated illustration, not an account screenshot. Example values only; provider menus may vary.

2. Check the first sync

Check the sync status and last synchronized time, then open the file and compare a known order. Use the available sync or retry action if rows remain pending.

Each original order has its own managed row. Use filter views to sort your overview; do not manually move managed rows. Shipping exports and tracking imports stay in order management.

If the connection fails

Reconnect if permission was revoked or expired. Check that the selected account can edit the file and that syncing is not paused. If Google connection is unavailable for the app, contact support; you do not need to create an OAuth client yourself.

Link to this answer
Do I need Google Sheets to export orders?

No. Google Sheets is an optional operational overview with customizable order columns.

Shipping templates, CSV/XLSX exports and tracking imports remain in the app’s order management workflow. Connecting Google Sheets is not required to use them.

Link to this answer
Why is an order update missing from my spreadsheet?

Check that the Google connection is still active, that the selected spreadsheet can be edited, and that your column configuration includes the data you expect.

Review any connection or sync error shown in the app. If authorization has expired or access was removed, reconnect with an account that can edit the file.

The spreadsheet reflects supported order data; it is not a live carrier tracking feed.

Link to this answer
Where do I configure upsells and discounts?

Open Upsell to configure product recommendations. Use Discounts & exit intent to configure offers and exit messages.

Preview the customer experience after saving. These tools are optional and do not need to be configured before your basic COD form can accept orders.

Link to this answer
Where do I connect advertising pixels?

Open Integrations → Pixels & events. Meta and TikTok use the Add pixel button with a Pixel ID and access token. AppLovin has a separate optional section, using an Event Key and an optional Conversion API key.

Follow the Meta, TikTok or AppLovin setup guide. Meta/TikTok product bindings and AppLovin event ownership use different rules.

Link to this answer
What does email marketing help me recover?

In COD Nina, email marketing supports recovery of COD forms that were started but not submitted, where an email address is available and the configured sending conditions are met.

Open Integrations → Email Marketing to configure your sending method, content and rules. Do not assume that the legacy checkout app’s online-payment recovery settings work the same way.

Link to this answer
Which integrations can I connect, and what do I need?

Connect only the services you use. Each guide shows where to find the required details, where to enter them and how to check the result.

ServiceWhat you needSetup guide
MetaPixel ID + access tokenConnect Meta
TikTokPixel ID + access tokenConnect TikTok
AppLovinEvent Key; optional Conversion API keyConnect AppLovin
Google address suggestionsCompatible Maps project + API keySet up Maps
Google SheetsGoogle sign-in + access to a spreadsheetConnect Sheets
Email senderSMTP details or Outlook authorizationSet up email

Which Google key? A Maps API key powers storefront address suggestions. Google Sheets uses account authorization. You do not need to create an OAuth Client Secret or a Picker API Key to connect your store.

Carrier ERP API connections and live delivery-event tracking are not included in this release.

Link to this answer
How do I connect Meta, TikTok or AppLovin?

Open Integrations → Pixels & events. For Meta or TikTok, select Add pixel and enter the platform’s Pixel ID and access token. For AppLovin, expand its optional section below and enter an Event Key; its Conversion API key is optional.

Follow the illustrated guide for your platform:

Saving a connection does not verify delivery. Follow the platform’s verification steps and use Meta/TikTok binding rules or AppLovin event rules as appropriate.

Link to this answer
How do I find my Meta Pixel ID and access token?
Illustrated setup guide · Meta

Use a Meta business account with access to the correct pixel. The token must belong to that same data source.

1. Find the ID and generate a token in Meta

Open Events Manager, select the intended pixel or data source, then open Settings. Copy its Pixel ID. In Conversions API, find the manual or direct integration section and select Generate access token.

Annotated illustration, not an account screenshot. Example values only; provider menus may vary.

If the token button is missing, ask your business administrator to grant the required access. Meta only shows this action to users with the relevant developer privileges.

2. Add the connection in COD Nina

Annotated illustration, not an account screenshot. Example values only; provider menus may vary.

3. Check an order event

Review product bindings and event behavior. Submit a test COD order with marketing permission allowed, then inspect the same data source in Meta Events Manager for Purchase and any diagnostics. Allow for provider reporting delay.

Saving the connection only stores your details; it does not verify them with Meta. COD Nina has no Test Event Code field, so this guide does not rely on sending server events into Meta’s Test Events view.

Official documentation · checked October 2026
Meta: access token setup ↗Meta: verify your setup ↗
Link to this answer
How do I find my TikTok Pixel ID and access token?
Illustrated setup guide · TikTok

Use the TikTok Ads Manager account with permission to manage your website pixel.

1. Open your web data source

In TikTok Ads Manager → Tools → Events → Data sources, select your website pixel and copy its Pixel ID. If you do not have one, use Connect data source → Web and follow the manual Pixel and Events API setup.

Annotated illustration, not an account screenshot. Example values only; provider menus may vary.

2. Add the connection in COD Nina

Annotated illustration, not an account screenshot. Example values only; provider menus may vary.

3. Check the result

Submit a test COD order with marketing permission allowed. In the same TikTok data source, look for PlaceAnOrder and review event diagnostics. Saving credentials alone does not verify delivery.

If the event is missing, check the account, token, binding rules and customer privacy permission before submitting another test.

Official documentation · checked October 2026
TikTok: find your Pixel ID ↗TikTok: generate an access token ↗

The token article uses another commerce platform as an example. Follow its TikTok console steps, then use the COD Nina fields shown above.

Link to this answer
How do I connect AppLovin with an Event Key and optional Conversion API key?
Illustrated setup guide · AppLovin

AppLovin is optional. This integration uses one Event Key per store, rather than a separate pixel for each product.

1. Find your Event Key

In AppLovin Ads, open the account’s pixel setup or key settings and copy AppLovin Event Key. Some installation screens label it AppLovin Pixel ID. Choose the account used for this store.

Annotated illustration, not an account screenshot. Example values only; provider menus may vary.

2. Save the connection in the app

Open Integrations → Pixels & events, expand the optional AppLovin section below the other pixel settings and enter the Event Key.

Annotated illustration, not an account screenshot. Example values only; provider menus may vary.

Only select This app when official Shopify app tracking is not active on the supported storefront pages. Changing this setting does not install, enable or disable the official app. Read event ownership and trigger timing before switching.

For a saved CAPI key, leaving the field blank preserves it. Changing the Event Key clears the old CAPI key unless you supply a replacement. Adding a CAPI key later does not backfill previous browser-only purchases.

3. Map product vendors and verify delivery

Under Advanced settings → Product categories, map each Shopify Vendor to an AppLovin category ID. Save the configuration, then test the actual checkout flow with the required customer privacy permissions.

Check both Pixel Helper and the matching account’s event overview. Saving the key or seeing a green Helper entry alone does not confirm that AppLovin received the event. Follow the verification checklist.

Official documentation · checked October 2026
AppLovin browser pixel ↗Conversion API ↗Validate your pixel ↗
Link to this answer
Which AppLovin events are sent, and when?

In Shopify app + custom COD, select who handles the first three storefront events. The setting controls events from this app; it does not change the official AppLovin Shopify app.

EventAppLovin Shopify app selectedThis app selected
page_viewOfficial appThis app
view_itemOfficial appThis app
add_to_cartOfficial appThis app
begin_checkoutThis app’s custom checkoutThis app’s custom checkout
purchaseThis app’s confirmed orderThis app’s confirmed order

Check which pages the official app actually covers. Other checkout or pixel apps may also send events. The same Event Key alone does not prevent duplicates between separate integrations.

When this app sends an event

  • page_view: the supported storefront tracking component initializes on a page.
  • view_item: the component has the displayed product and price information.
  • add_to_cart: a supported cart action succeeds. Direct COD checkout does not invent an add-to-cart event.
  • begin_checkout: the customer opens a COD popup or starts interacting with an inline form, once a valid quote is available. This can happen before submission.
  • purchase: the app confirms successful COD order creation. Failed submissions do not produce a purchase; COD creation does not mean cash has been collected.

Browser events require the applicable marketing and data-sharing permissions. The first three events apply only to supported components when This app is selected.

Browser and server delivery

With only the Event Key, events use the browser pixel. A valid optional Conversion API key adds server-side purchase delivery for future confirmed orders; it does not add server-side delivery of all five events or recover earlier browser-only orders. This app reuses the purchase deduplication ID across its browser and server paths. Deduplication with another app is not guaranteed.

Purchase values and categories use the original confirmed order snapshot. Later payment collection, mapping edits or post-submission add-ons do not create a second initial purchase. AppLovin does not use the Meta/TikTok product-binding table.

Link to this answer
How do I map Shopify vendors to AppLovin product categories?

Open Integrations → Pixels & events → AppLovin → Advanced settings → Product categories. Each row maps a Shopify product’s Vendor to an AppLovin numeric category ID. This setting does not edit the Shopify product.

Annotated illustration, not an account screenshot. Example values only; provider menus may vary.

Use the actual vendor shown on each product. A row for Tea Studio does not match Another Ceramics Brand. Names are case-sensitive after surrounding spaces are removed. Confirm that a shared vendor category is appropriate for all its products.

The outbound event field is items[].item_category_id, sent as an integer. A product without a matching vendor is sent without that field; the purchase can still be accepted with a category warning.

Choose the correct ID: 6740 means Coffee & Tea Sets. 6347 means Kitchen & Dining Furniture Sets and is not the correct category for a tea service.

Mappings affect this app’s events, not the official Shopify app’s payload. Saved purchases keep their original category snapshot. After changing a mapping, verify a fresh quote and subsequent event; existing received events and their historical coverage percentages are not automatically rewritten. If Vendor was recently changed in Shopify, wait for product synchronization and verify the updated product before testing.

Official documentation
AppLovin category IDs ↗
Link to this answer
Why are AppLovin events missing or showing warnings?

Check the same advertising account, Event Key and date range used for the test. The event overview may distinguish Shopify from AppLovin Pixel sources; check the source of each event rather than expecting every event to say Shopify.

Helper sees an event, but the platform does not

  1. Check the actual flow. An EasySell or other third-party form does not run this app’s custom COD event logic. Confirm that the customer used this app’s form.
  2. Check privacy permission and configuration. Confirm the Event Key, intended event owner and the customer’s applicable marketing permissions.
  3. Inspect browser Network requests. The SDK loads from s.axon.ai and sends pixel requests to b.applovin.com. DNS errors such as ERR_NAME_NOT_RESOLVED, blocked requests or interrupted navigation can prevent delivery even when the SDK script loaded. Inspect the actual request and response before creating another order.
  4. Start a fresh test session after fixing a failure. This app’s local deduplication can suppress the same event in the original tab after it was handed to the SDK. A refresh alone is not proof that a new request was sent. Do not repeatedly submit orders to test a missing checkout-start event.
  5. Match the platform result. Helper green means the payload structure and fields pass its checks; it is not a server receipt. Check the event overview and diagnostics as well. Reporting may take time, but there is no fixed delay promised here.

Purchase received with “Item Category · Inactive · 0%”

AppLovin reports no category coverage for the selected events. Compare the purchased product’s actual Vendor with the saved vendor mappings and check for a numeric items[].item_category_id in the payload. A correctly spelled store name is not a substitute for a different product vendor. Do not resend an accepted purchase just to remove a historical warning.

“The axwrt cookie is unset”

This is a user-identification enhancement warning, not proof that the event was rejected. AppLovin recommends mirroring its SDK-generated _axwrt into an HTTP-set axwrt cookie. Saving an Event Key or a CAPI key does not configure that enhancement. Shopify App Proxy strips Set-Cookie; it needs a separately supported domain/server setup. Do not invent a cookie value to clear the warning. Browser privacy policies can still limit cookie retention.

Ad attribution is a separate check

Actual AppLovin ad clicks supply aleid and alart. Preserve them through redirects. Manually adding UTM tags does not create a real advertising click or prove campaign attribution. Event receipt and ad-attributed conversions are different checks.

If a valid request still does not appear, provide support with the store, test time, event name and relevant diagnostics. Keep CAPI keys, reporting credentials and customer contact details private.

Link to this answer
How do Meta/TikTok product bindings work, and which events are sent?

This guide covers Meta and TikTok. AppLovin uses separate event ownership and timing and vendor category mappings.

COD Nina sends Meta Purchase and TikTok PlaceAnOrder after a successful COD order submission. This records an order being placed, not cash being collected.

Page views, product views, add-to-cart, checkout-start and payment-info events are not sent by this Meta/TikTok COD order integration.

Choose destinations with product bindings

Annotated illustration, not an account screenshot. Example values only; provider menus may vary.

If an order matches active product bindings: the event goes to the combined destinations in those matches.

If no active bindings match: the event goes to all configured valid pixels. An unbound product is not automatically excluded from tracking.

Before checking your events

  • Allow the store’s required marketing and data-sharing permissions for the test. Missing or denied permission can prevent delivery.
  • Check the same pixel that the binding selects.
  • Browser and server delivery use the same order event identifier for deduplication.
  • Add-ons selected before submission are included. Post-submission add-ons do not trigger a second order event.

A tracking failure does not prevent the order from being created. Check order management separately from the advertising platform.

Link to this answer
How do I create and set up a Google Maps API key?
Illustrated setup guide · Google Maps

Use this key for address suggestions in the COD form. It is separate from Google Sheets authorization.

Check compatibility first. The current address integration uses Google’s legacy Places Autocomplete service. Google has not made this service available to new customers since March 1, 2025. If your project cannot use it, contact support before setting up a key for this feature. Enabling Places API (New) alone will not make the current integration work.

1. Prepare a compatible Google Cloud project

For an eligible project, confirm billing is configured and enable Maps JavaScript API and the applicable Places API (legacy) service. Google Maps usage is billed by Google.

2. Create a key and restrict where it can be used

Annotated illustration, not an account screenshot. Example values only; provider menus may vary.

Add your actual storefront domain patterns, for example https://www.example.com/*, https://example.com/* and, if used, https://your-store.myshopify.com/*. Replace these examples with your own hosts. Add a preview host only if you need to test on it.

The key is used on your storefront. Restricting it only to admin.shopify.com will not allow storefront requests. Avoid allowing every website.

3. Save the key and enable autocomplete

Annotated illustration, not an account screenshot. Example values only; provider menus may vary.

4. Verify and troubleshoot

A saved key is not proof that Google accepted it. Type a known address on the actual storefront domain and confirm that suggestions appear and selecting one fills the expected fields.

If suggestions do not appear, check project eligibility, billing, enabled APIs and website restrictions. Allow time for restriction changes to propagate. If support needs an error, share its text and the affected domain, not the full API key.

Link to this answer
How do I connect an SMTP or Outlook email sender?
Illustrated setup guide · Email

Open Integrations → Email Marketing and select Configure in Sender account, then choose a sending method. Sender connection and email recovery rules are configured separately.

Option A · Use your email provider’s SMTP settings

Open your provider’s SMTP or outgoing mail documentation. Obtain the exact server, port, encryption method and SMTP credential for your account. Some providers require an app password or a dedicated SMTP credential instead of your normal sign-in password.

Annotated illustration, not an account screenshot. Example values only; provider menus may vary.

Option B · Authorize Outlook

Annotated illustration, not an account screenshot. Example values only; provider menus may vary.

Check actual delivery

Saving SMTP settings does not test the connection. Configure the email content, sending delay and active rules, then use a controlled COD recovery scenario with an email address you own. Check receipt, the spam folder and any reported sending error.

For Outlook, retry authorization if the connection was revoked. Neither sending method requires a Google Maps key.

Link to this answer
My credentials are saved, but the integration does not work. What next?
  1. Confirm the purpose. Pixel ID, access token, Maps API key and Google sign-in serve different integrations.
  2. Check the account and destination. A valid token for the wrong pixel or a Google account without edit permission will not connect the intended resource.
  3. Check feature-specific prerequisites. Pixel bindings and consent, Maps API eligibility and referrers, spreadsheet sync status, or email sending rules may explain the result.
  4. Verify an actual outcome. Look for an order event, an address suggestion, a synced row or a received email.
  5. Contact support with the error. Include the feature name, store address and time of the test. Mask access tokens, passwords and keys.

When editing a saved pixel, leave the replacement token blank to keep its stored value, or paste a new token when rotating it. Do not use a masked placeholder as a real credential.

For AppLovin, follow missing events, category warnings and Cookie diagnostics. Its Event Key, optional Conversion API key and Reporting Key have different purposes.

Link to this answer
Why does the import say “Shipment not found in this store”?

Use the shipment reference generated by Export orders in the same store. A Shopify order number or the ERP’s own order ID is not a replacement for this reference.

  1. Check that you are importing into the store that exported the file.
  2. Make sure the reference column is mapped correctly and its values have not changed.
  3. If the export was released, review its current state instead of reusing that released reference.
Link to this answer
Why did my tracking number lose leading zeros or change to scientific notation?

Spreadsheet software can interpret tracking numbers as numbers instead of text. Set the destination column to Text before pasting to preserve the full identifier.

If digits have already changed, copy the original tracking number again from your provider. Changing the cell format afterwards cannot restore missing digits. Review the imported value before confirming an update.

Link to this answer
Why are some tracking rows skipped or marked as conflicts?

Rows without a tracking number are skipped, and repeated rows are not applied repeatedly. Conflicting tracking details are not silently overwritten.

Check the import preview for each affected row. Compare the original shipment reference and tracking details, correct the file, and preview it again.

Link to this answer
How do I contact support?

Use the support contact provided on COD Nina’s Shopify App Store listing. Include your store’s .myshopify.com address, the feature you were using, the steps to reproduce the issue, and the exact error message.

A screenshot of the relevant screen can help. Remove customer addresses and other unnecessary personal details, and never send passwords, access tokens or OAuth client secrets.

Link to this answer

Still need a hand?

Have your store address, the steps you tried, and the exact error message ready.

How to get support ↗