Photo Contests and Public Voting

James

James

Last updated on Sep 2, 2026

Photo contests combine a Photo upload bonus action, a storefront gallery, public voting, moderation, and a most-votes winner method. Photo upload is a Pro bonus action: on Free you can configure and preview it, but it stays paused for entrants on new contests until you upgrade.

Before you start

  • Decide what entrants may submit and how you may reuse their images.
  • Add clear moderation, voting, tie-break, and winner-selection rules to your terms.
  • Use an Online Store 2.0 theme page for the Photo gallery block.
  • Connect a Pro email integration first if you want consenting voters to sync to a marketing audience.

1. Configure the Photo upload action

  1. Open the contest editor and go to Build > Bonus actions.
  2. Click Add bonus action and choose Photo upload.
  3. Set the action title, number of entries earned, whether it is required, the upload prompt, maximum file size, and allowed file types. JPEG, PNG, and WebP are allowed by default with a 10 MB limit; the editor permits a limit from 1 to 50 MB.
  4. Configure moderation and voting:
    • Manually approve photos — new photos stay out of the gallery until you approve them in Results. Existing photos remain approved when you enable this setting.
    • Require email to vote — the gallery asks for an email address and enforces one vote per email per contest.
    • Ask voters for their name — adds an optional first-name field when email is required.
    • Ask voters for marketing consent — adds the contest's email consent checkbox. It is optional and unchecked. Consenting voters sync to active Pro email integrations.
  5. Save and preview the contest.

Photo upload settings showing manual approval and email-gated voting controls

Without Require email to vote, votes are anonymous and limited by the shopper's browser or device. A shopper can change their vote. Anonymous votes increase the totals but do not appear as identified voter rows in Results.

2. Add the Photo gallery block

  1. Go to Launch > Photo gallery block. This channel appears when the contest has a Photo upload action.
  2. Click Open theme editor.
  3. Add the Photo gallery block to the page where shoppers should browse and vote.
  4. Select the contest, place the block, and click Save.
  5. Return to Launch and confirm the channel reports Added.

In Shopify's theme editor you can configure the heading, winner heading, two to four columns, whether names and vote counts are shown, colors, vote-button text, and maximum width. Names are shown only when the contest collects them, and only the entrant's first name is exposed.

Voting opens when the contest's start date arrives. The entry end date does not close voting by itself; voting closes when you select a winner or resolve the contest with No winner. After winner selection, the gallery highlights the winner.

3. Approve and moderate photos

Open Results > Photo entries. Use:

  • All photos for every photo submission.
  • Awaiting approval for new photos held by manual approval.
  • Rejected for photos you kept out of the gallery.
  • Approve or Reject on a pending card.
  • The card menu to hide or unhide an approved photo.
  • Delete photo to remove only the uploaded image while keeping the entrant.
  • Delete to remove the complete entrant record and all winner eligibility.

Results photo moderation showing approval filters and pending photo actions

Photo entry action menu showing separate Delete photo and Delete options

Pending, rejected, and hidden photos do not appear in the public gallery and cannot receive new public votes. Existing vote totals are retained. Hiding also excludes a photo from Most votes; approval or rejection alone does not remove the entrant from random/manual selection.

Delete photo removes only the uploaded image from the gallery and Shopify Files, deletes votes for that photo, and subtracts its photo-action entries; the entrant stays in the contest with at least one entry. Delete removes the entire entrant and all winner eligibility. Rejection is reversible; both deletion actions are permanent.

The dashboard shows Needs attention > Approve photos while a queue is waiting. UserLoop sends an operational review alert when the first photo enters an empty queue. While more submissions arrive and the queue remains open, additional alerts are limited to one per 24 hours.

4. Review voters and choose a winner

When email is required, open Results > Votes to see each voter's email, optional name, selected photo, marketing-consent state, and vote date. Identified voters also appear in All entries as gallery-vote activity. Anonymous votes are visible only through photo vote totals.

After the contest ends, open Draw winners, choose a prize, and select Most votes. The highest-voted confirmed, visible photo that has not already won is eligible. If you rejected a photo after it received votes, also hide it to exclude it from Most votes. If eligible leaders are tied, choose one of the tied photos. You can also use random or manual selection.

Marketing consent and integrations

A voter is sent to Klaviyo, Omnisend, or Campaign Monitor only when all of these are true:

  • The store is on Pro and the provider is connected.
  • Require email to vote is enabled.
  • Ask voters for marketing consent is enabled.
  • The voter selects the consent checkbox.

Non-consented and anonymous votes are never subscribed. Historical votes are not resent after you connect an integration.

Troubleshooting

  • The gallery channel is missing in Launch: confirm the contest has a saved Photo upload action.
  • A photo is not public: check Awaiting approval, Rejected, and the Hidden badge, then confirm the correct gallery block and contest are saved in the theme.
  • A voter is not listed: identified voter rows require Require email to vote.
  • A voter did not sync: confirm Pro, an active integration, both voting consent settings, and that the voter selected the checkbox.
  • Most votes finds no eligible photo: unhide a confirmed photo that has at least one vote and confirm the entrant has not already won.

For general action behavior, see Social, Question, Upload, and Secret Code Actions. For result controls, see Managing Entries and Selecting Winners.