Snug Gallery / Guides

Holiday customer photo contest on Shopify: gallery setup

Run a December photo contest where entries land in a moderated gallery on your Shopify store: page, form, daily review, picking a winner, and January.

A customer photo contest is the oldest trick in holiday marketing and it still works, because people who have just received a parcel want to show it off and a prize gives them a reason to send the photo to you instead of only to their friends. The part that usually goes wrong is not the idea but the plumbing: entries arrive by email, DM and a hashtag nobody can search, the shortlist lives in someone's downloads folder, and in January there is nothing on the store to show for it. This guide sets the contest up so every entry is submitted through a form on your own store, reviewed in one queue, and published to a gallery that keeps earning its place after the prize has gone out. It uses the customer photo submission feature in Snug Gallery, which is on the Standard and Unlimited plans.

What you are building

One page on your store, say /pages/holiday-photos, with a short explanation of the contest, a link to the rules, and a gallery block underneath. The block shows a Share your photo button; a shopper taps it, picks a photo, adds a name and a caption, ticks the consent box and sends. The photo goes into a queue in the app, not onto the page. You approve the ones that fit, and they appear in the gallery within a minute. The gallery is both the entry list and the public shortlist, which saves you building either.

Every entry carries the name the shopper typed, their caption, and a consent record, so when you later want to reuse a photo in an email or on a product page you know what you were given permission for. The form walkthrough describes each field in detail if you want to see exactly what a shopper is agreeing to.

Before the gallery: rules, prize and dates

The app handles the photos. It does not handle the law, and a contest with a prize is a promotion that has rules in every country you sell to. Decide who can enter, how a winner is chosen (judged or random; judged is simpler to defend), when entries close, when the winner is announced, and what the prize is worth. Put all of that on a plain Shopify page and link to it from the contest page and from the consent text. If you sell into several countries, pick the rules that satisfy the strictest one or restrict entry; a lawyer for an hour is cheaper than an argument in January.

Pick the dates around delivery, not around the calendar. A photo contest about gifts received cannot start until parcels arrive, so an entry window that opens the week after your last guaranteed shipping date and closes on 2 or 3 January catches both the early presents and the ones opened on the day. Announce the winner in the first full week of January, when inboxes are quiet.

Set up the contest gallery and page

  1. In Snug Gallery, create a new gallery and name it for the year, for example Holiday photos 2026. Masonry suits a contest because shoppers send portrait and landscape photos in equal measure and Masonry keeps each one whole; Grid crops to a shape. The layout guide compares them.
  2. Create the page in Shopify (Online Store, Pages) with the contest explanation and a link to the rules page. Keep the URL seasonal but not dated, /pages/holiday-photos, so next year's contest can reuse it and any links you earn this year keep working.
  3. In the theme editor, open that page's template, add the Gallery block and point it at the new gallery. Turn on customer submissions in the block settings. Change the button text from the default Share your photo to something that says what it is, such as Enter the photo contest, and leave Show submitter names on so entrants see their name under their photo, which is half the reason they share the page.
  4. Submit a test entry yourself from a phone. Check the photo arrives in the Customer photos page in the app as pending, approve it, and confirm it shows on the page. Then reject and remove it so the gallery starts empty on launch day.
  5. Add the contest page to the main menu or the announcement bar for the duration, and to the order confirmation and shipping notification emails. The shipping email is the one that matters: it arrives when the parcel does.

Limits worth knowing before launch

A submitted photo can be a JPG, PNG, WebP or HEIC up to 10 MB. iPhones send HEIC by default and that is accepted, so entrants do not need to convert anything. Names are capped at 80 characters and captions at 500, which is enough for a sentence about the gift and who it was for. Videos are not accepted through the form; if you want a video contest, run it on a social network and link the gallery to the winners afterwards.

Submissions are rate limited to five per hour from one network address and sixty per hour for the whole store. Five per address is per public IP, so a family entering from the same home Wi-Fi shares the five, and an office does too. Sixty per store per hour is more than most contests see in a day, but if you are a large store launching with a big email send, stagger the send or expect a few people to be told to try again later. Approved photos also count towards the gallery's 1,000 image limit, which matters only if you run the contest in a gallery you already use for something else, another reason to give it its own.

Reviewing entries: a daily routine

Entries wait as pending until someone looks at them. Leave auto-approve off for a contest; a prize attracts photos that have nothing to do with your products, and the odd one that is actively unpleasant, and you do not want either on your store for even an hour. Set a daily slot, ten minutes after the first coffee, and work through the pending tab: approve what fits, reject what does not. Rejecting removes the file, approving publishes it, and nothing happens to the photo until you choose. The moderation queue guide covers each button and what it deletes.

Decide the rejection bar before entries arrive and write it down: no photo without the product in it, no photos of other people's children unless the entrant is clearly the parent, nothing with a competitor's logo. A written bar means two people can moderate the same queue and reach the same answer, and it gives you a sentence to send when an entrant asks why their photo is not up.

Captions are visible on the gallery, so read them. A caption that names a child, gives an address or includes a phone number should be rejected, and you can reply to the entrant asking them to resubmit with a shorter one. The first line of the caption also becomes the image's alt text, so an entry with a decent caption is doing accessibility work for you.

Picking and announcing a winner

The gallery is your shortlist. By closing day it holds every approved entry with the name the entrant gave, in newest-first order if you left the sort alone. Judge from the page, not from the queue, because the page is what the public saw. Note the winner's display name and submission time; you will match it to the order or the email they used when you contact them.

Snug Gallery does not run public voting, and we would not recommend it for a contest anyway: voting contests are won by whoever has the biggest family group chat, and they invite exactly the bot traffic the rate limit exists to stop. Judge it yourself, or with a small panel, against the criteria in the rules.

Once the winner has agreed, edit the winning image's caption to add a line such as Winner, December 2026, and drag it to the front if the gallery is on Manual sort. Then publish a short post or email with the winner and a handful of runners-up linking to the contest page. Entrants who did not win still get to see their photo on a real store, and that link is the one they share.

January: keep the gallery, retire the form

Do not delete anything. A gallery of forty real customers with your products in their living rooms is the best social proof you will produce all year, and it was free. Turn off customer submissions on the block so the entry button disappears, change the page heading from the contest to something like Your photos, and keep the page in the footer menu. The same advice applies to the gift guide page: the season ends, the URL should not.

Keep the consent records too. If an entrant later asks what you hold about them or wants their photo removed, the submission record is what you look up; the data request guide walks through both. Next November, create Holiday photos 2027, point the same block at it, turn the button back on, and the whole thing takes an afternoon instead of a week.

Frequently asked questions

Do I need a separate contest app to run a photo contest on Shopify?

Not for the photo side. Snug Gallery's customer submission form collects the photo, name, caption and consent on your own store and holds entries for moderation before they appear in a gallery. You still need to write the contest rules yourself and judge the winner; the app does not run voting or draw a random winner.

Can shoppers enter the contest from an iPhone?

Yes. The form accepts JPG, PNG, WebP and HEIC files up to 10 MB, and HEIC is what an iPhone produces by default, so entrants do not need to change any settings. The form is a normal part of the page and works in the phone's browser.

How many entries can a contest receive?

The form allows five submissions per hour from one network address and sixty per hour per store, and a gallery holds up to 1,000 images. For most stores that is far more than a December contest produces. Very large stores should expect a few retry messages in the hour after a big email send.

Should I turn on auto-approve during the contest?

No. A prize attracts off-topic and occasionally offensive photos, and auto-approve would publish them to your store immediately. Leave entries pending and review them once a day; approving takes one click per batch and the photos appear on the page within about a minute.

More guides