FlowCastle/Docs/Accept Photo and Video Submissions from Users

Accept Photo and Video Submissions from Users

A "suggest a post" bot for a channel, a photo contest, a UGC inbox for a brand — people send media, you receive it and decide what to publish. Two ways to build it, from a three-node flow to a moderation group with buttons.

5 min read·Last updated: 2026-08-30

Guide

  1. 1

    What you'll build

    People open your bot and send a photo or a video. You get it — with the sender's name — and decide whether to post it. A "suggest a post" bot for a channel, a photo contest, a UGC inbox for a brand.

    Two ways to build it. No code, no second bot.

    Way 1: Live Chat inboxWay 2: forward to a chat
    Where submissions landLive Chat in your dashboardYour private chat or a moderation group in Telegram
    Nodes34

    Start with Way 1. Switch to Way 2 when you want submissions inside Telegram.

  2. 2

    Way 1: submissions go to Live Chat

    1. Trigger/start.

    2. Message — say what to send:

      Send one photo or video you'd like us to publish. Add a caption if you want it shown with the post.

    3. Action → Start Conversation. Open the Add Action menu, type "conversation", pick it. Team and agent are optional.

    The Start Conversation action open in the editor, with optional team and agent selects

    Go live. Every photo, album, video or document a person sends after the prompt shows up as a conversation in Live Chat, with the media inline. Download it, post it, reply if you need something else from them.

  3. 3

    Way 2: the bot forwards submissions to a chat

    Four nodes in a row:

    Flow canvas: Starting Step → Ask for a photo (Wait for reply) → Forward to moderators (1 attachment) → Thank the sender

    Step 1: ask, then wait

    Add a Message with the prompt from Way 1. At the bottom of its editor, turn on Wait for reply. Set Expected reply type to Any text. Leave Save reply to variable empty.

    The Wait for reply card: toggle on, Expected reply type = Any text, Save reply to variable empty

    Any text is the option that accepts a photo or video without a caption.

    Step 2: forward the media

    Add a second Message after the wait. Three settings:

    1. Attach the incoming photo. Under 📎 Attachments, click Add from URL. Don't type anything into Media URL — click {}, search "photo" and pick Latest photo from message. A chip appears in the field. Set Media Type to Image, click Add Media.

    Add Media from URL: the Media URL field holds a "User message photo" chip, Media Type is Image

    Accept videos too? Repeat with Latest video from message and type Video. An empty chip is skipped, so a photo-only submission sends the photo and a video-only one sends the video.

    2. Caption. In the message text, insert chips from the picker:

    New submission from {{first_name}} (@{{username}})
    {{message_text}}
    

    3. Destination. Under Send to, choose Specific chat. On the Contact tab, search for yourself and pick your own contact — press Start in your bot once so it exists. To send to a moderation group instead, pick the group (add the bot to it first).

    The Send to section with Specific chat selected, the Contact tab active and the owner's own contact chosen

    The picker lists people, groups and channels the bot already knows:

    The contact picker open, listing a person and a moderation group with icons

    The other two tabs: Variable for a chat ID stored in a variable, Chat ID for a chat the bot hasn't met yet — a numeric ID, or a public group's @username. Bots can't message a person by @username.

    Step 3: confirm to the sender

    Add one more Message, default Send to:

    Got it — thanks! We'll let you know if it gets published.

    Step 4: test

    Click Test, send /start, then send a real photo from your phone. The group should get the photo with the caption; you should get the confirmation.

    Got the caption but no picture? The Media URL holds typed text instead of the chip. Reopen Add from URL and insert it from the {} picker.

  4. 4

    Why there are no Publish / Skip buttons

    You could put buttons on the forwarded message — they work in your chat. But when you press one, the flow continues in your chat, as a new event: it no longer holds the submitted photo or the sender. A "Publish" branch could neither post the photo to your channel nor reply to the author. So just forward the photo from your chat to the channel by hand. That's the moderation step, and it's one tap.

    If you need the bot to tell the author when their photo is published, that's a different design — a flow that runs on the sender's side, see Notify an Admin or Send a Message to Another Chat.

  5. 5

    Common mistakes

    • Typed placeholder in Media URL. Hand-typed text is just text. Insert the chip from {}.
    • Expected reply type is not "Any text". A photo without a caption fails validation and the bot asks again.
    • Text-only reply. If the person sends plain text, every media chip is empty and the forward step fails. Keep the prompt explicit: "send a photo or video".
    • Typing a person's @username on the Chat ID tab. Bots can't address people by username. Pick them on the Contact tab instead. For groups, the bot must be a member.
  6. 6

    What's next

    All the ways a bot can message someone other than the current user, side by side: Notify an Admin or Send a Message to Another Chat

Next Guide

Continue with
Notify an Admin or Send a Message to Another Chat
A bot usually replies to the person it is talking to. Here is how to send something to your team, to a log channel, or to an admin who has to approve it.

Related Guides

More guides to help you continue from this topic.