Widget settings
All widget configuration lives in the GiftPrint app, not in the Shopify theme editor.
This is a platform constraint, not a design choice: theme app blocks cannot read section.settings, so any value you typed into the theme editor would never reach the widget. Instead, GiftPrint writes your settings to a shop metafield (giftprint.settings) that the widget reads on every page load. Change a setting once and it applies everywhere the block is placed.
When you open the block in the theme editor, you'll see a short notice with a link back to the app settings — that's expected.
Adding the block
- Online Store → Themes → Customize
- Open a Product or Cart template (the block is allowed on both)
- Add block → Gift Note Widget
- Position it where you want — under the Add to Cart button works well
- Save
There is nothing to configure here. Continue in the GiftPrint app.
Available settings
GiftPrint → Settings → General → Storefront Widget
| Setting | Type | Description |
|---|---|---|
| Enable widget | Checkbox | Turns the widget on for the storefront. When off, the block renders nothing. |
| Price | Number | What you charge for a gift note. 0 makes it free. |
| Show "To" field | Checkbox | Whether customers can enter a recipient name. |
| Show "From" field | Checkbox | Whether customers can enter a sender name. |
| Template selection | Select | Picker — customers choose a design and see a live card preview (Starter/Pro). Fixed — your default template is always used, and the widget renders as a plain message form with no grid and no preview. |
Click Save. Changes take effect on the next storefront page load.
Hidden fields
Turning off To or From removes the input entirely — the value is never collected, never added to the order, and the printed card skips that line. Existing orders are unaffected.
Template selection and your plan
Picker mode is a Starter/Pro feature. On the FREE plan it is automatically saved as Fixed — the widget still collects messages, it just always uses your shop's default template and shows no template grid or preview. You'll see a notice when this happens.
Set the default template in the same tab under Default Template. All 11 designs are available on every plan:
- Style: Minimal, Botanical, Luxury, Playful
- Occasion: Holiday, Birthday, Thank You, Wedding, Congratulations, Baby Shower, Sympathy
Values GiftPrint derives for you
Some values are written to the metafield automatically from your other settings — you don't set them directly:
| Value | Where it comes from |
|---|---|
charLimit, optimalCharLimit | Your selected page format. A 3×3" card allows far less text than A6, and the widget's character counter follows. |
defaultTemplate | Settings → General → Default Template |
variantId, productId | The hidden "Gift Note Service" product, created when you set a price |
This is why changing your page format also changes the character limit customers see on the storefront.
Changing how the widget looks
Colors, fonts, spacing and radius are controlled with CSS custom properties, which work in any theme — see CSS variables.
For full control over behavior (or to build your own UI on top of GiftPrint's hidden inputs), see the JavaScript API.
Localization
Widget text is loaded from the extension's translation files, starting with the bundled en.default.json. Shopify serves the file matching the customer's store language automatically. Adding a language requires editing the app extension and redeploying it — it is not something you can change from the theme editor.
Troubleshooting
Widget doesn't appear on the storefront
- Check that Enable widget is on in GiftPrint settings
- Confirm the block is added to the Product (or Cart) template and the theme is saved
- Clear your browser cache and reload
Customers can't choose a template
- Picker mode requires Starter or Pro. On FREE it is saved as Fixed.
- Confirm Template selection is set to
Pickerin GiftPrint settings.
Character limit looks wrong
- It follows your page format. Change the format in Settings → General → Print Settings and save — the widget picks up the new limit.
For more help, see Troubleshooting.