GiftPrint as Print Engine
GiftPrint is designed to work alongside existing gift message apps. Instead of replacing Giftship, Wrapin, or Wrapped, GiftPrint enhances them by providing beautiful print-ready templates and professional formatting. They collect the message; GiftPrint prints it beautifully.
Architectural principle
If your store already uses Giftship, Wrapin, or Wrapped, do NOT install the GiftPrint storefront widget. Two widgets competing to collect gift messages on the same product page creates conflicts and unreliable behavior, especially on theme updates.
Instead, keep using your existing gift app's widget. GiftPrint automatically detects messages from that app with zero additional setup.
How GiftPrint reads messages
When you open an order in GiftPrint, it scans the order for gift messages across two Shopify standard fields and a fallback:
- Order-level custom attributes (
customAttributes/note_attributes) — captured by most gift apps - Line item properties — for messages attached to specific products
- Order note — used only when the two sources above produced zero messages
Every match in (1) and (2) is collected — a single order can produce multiple gift cards if a customer attached different messages to different line items, or if attributes appear at both levels. The order note is a last-resort fallback, not a per-source layer.
Supported keys
GiftPrint recognizes gift messages under these property keys. Key matching is case-sensitive (Gift Message matches, gift message does not). Template values are normalized to lowercase, so Luxury and luxury both work.
| Key | Source / Context |
|---|---|
Gift Message | Wrapped app, GiftPrint widget, generic implementations |
Gift Note | Wrapin (probable), generic implementations |
Message | Giftship — detected only when a non-empty To or From property is present in the same attribute set |
_gift_message | Custom implementations (underscored for private data) |
gift_message | Custom implementations |
gift-note | Custom implementations |
gift-message | Custom implementations |
_gift_note | Custom implementations |
_has_gift_note | GiftPrint widget marker — emits an empty placeholder card if no message key was filled |
If none of the keys above match at the order or line-item level, GiftPrint falls back to the order's note field (Shopify's native "Order note") as a single message.
Why Giftship uses context detection: Giftship stores gift messages under the generic key Message. To avoid false positives with other apps that use Message for non-gift data, GiftPrint only treats it as a gift message when To or From properties are also present.
Template selection from order data
Templates can be specified per-order by adding a Template or _gift_card_template property to the same location as the message:
{
"Gift Message": "Happy Birthday!",
"Template": "luxury"
}
GiftPrint recognizes these keys (case-sensitive): Template, _gift_card_template
Template values are normalized to lowercase, so Luxury, LUXURY, and luxury all resolve to the same template.
Priority:
- If
Templateor_gift_card_templateis present, GiftPrint uses that template - If missing, falls back to the shop's default template (set in Settings → General)
- If the template ID is invalid or unknown, uses the shop default
Editing before print
When a merchant opens an order with a detected gift message in GiftPrint:
- The message and template are loaded into the preview
- Merchant can click Edit to open a modal with the full message and template picker
- Changes are visible in the live preview
- When saved, edits apply only to this session — the original message in the Shopify order is never modified
- All following PDFs use the edited version for this order only
This is intentional: GiftPrint never overwrites original customer data.
App-specific setup guides
Giftship
GiftPrint auto-detects Giftship messages. No additional configuration needed.
See the full guide: Giftship integration
Wrapin
GiftPrint auto-detects Wrapin messages. No additional configuration needed.
See the full guide: Wrapin integration
Wrapped
GiftPrint auto-detects Wrapped messages. No additional configuration needed.
See the full guide: Wrapped integration
Other apps and custom implementations
If your gift app stores messages under a standard Shopify field (not in a proprietary database), GiftPrint should detect it automatically using the fallback keys listed above.
To verify:
- Check that a message stored by your app appears in the order's
note_attributesor line itemproperties(use Shopify's API explorer or order webhook payloads) - Find the property key (e.g.,
"Custom Gift Message") - Contact support@pg-artlab.com with the key name
- We'll add it to the list in the next update
If your app stores messages in a custom table or private database without writing to Shopify fields, GiftPrint cannot access them — integration would require Shopify GraphQL API or webhook configuration by the other app.
Combining with GiftPrint's storefront widget
If you want to offer BOTH:
- Messages collected by another app (for existing stores)
- Direct GiftPrint widget (for new stores or specific products)
Install the GiftPrint widget only on specific product templates, not globally. Use theme settings to hide it on products where your other app is active.
Multiple messages on one order
GiftPrint does not deduplicate. If multiple gift apps each write a message to the same order under different keys — or if the customer added gift messages to several line items — GiftPrint extracts all of them and shows each as its own gift card in the order view, ready to print individually.
Recommendation: Use one gift app for message collection to avoid duplicate cards. If you do see duplicates, you can skip the unwanted card in the order view; printing is per-card.
Troubleshooting integrations
GiftPrint doesn't detect a message:
- Verify the message was actually saved to the order (check in Shopify admin → Orders → click the order → scroll to Custom attributes)
- Check that the app's key name matches one of the supported keys listed above
- For Giftship specifically, verify that
ToorFromproperties are also present
Message appears with wrong formatting:
- GiftPrint reads the message exactly as stored by the other app
- If the other app stored HTML or special characters, those are preserved
- Edit the message in GiftPrint before printing to clean up formatting
For more troubleshooting, see Troubleshooting.