Skip to content

Conversation

@patrikbraborec
Copy link
Contributor

@patrikbraborec patrikbraborec commented Dec 17, 2025

Note

Adds documentation on transparently handling free-plan limitations, including using status messages and graceful exits.

  • Docs: Handling free users / limitations
    • Add "Communicating limitations" to platform/actors/development/programming_interface/status_messages.md with guidance to:
      • Use setStatusMessage/exit messages to explain early finishes or failures.
      • Avoid misleading system-like errors.
      • Document limits in README and input schema.
    • Add "Handling free users" to platform/actors/publishing/monetize/index.mdx covering:
      • Upfront communication of limits.
      • Graceful exits with clear status messages (linked section).
      • Avoiding confusion by not presenting policy limits as platform errors.

Written by Cursor Bugbot for commit 803f9d6. Configure here.

@apify-service-account
Copy link

Preview for this PR was built for commit 803f9d6 and is ready at https://pr-2150.preview.docs.apify.com!

@apify-service-account
Copy link

Preview for this PR was built for commit 911fa3c and is ready at https://pr-2150.preview.docs.apify.com!

@apify-service-account
Copy link

Preview for this PR was built for commit 449beba and is ready at https://pr-2150.preview.docs.apify.com!

@apify-service-account
Copy link

Preview for this PR was built for commit 51f6094 and is ready at https://pr-2150.preview.docs.apify.com!

@github-actions github-actions bot added the t-c&c Team covering store and finance matters. label Dec 17, 2025
@apify-service-account
Copy link

Preview for this PR was built for commit 3358426 and is ready at https://pr-2150.preview.docs.apify.com!

Copy link
Member

@metalwarrior665 metalwarrior665 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I added a few suggestions to be more perscriptive so devs do this correctly. Feel free to rephrase me.


If your Actor has specific limitations for users on the Apify free plan (e.g., restricted features, limited results), it is crucial to communicate these clearly to avoid confusion.

- Status messages: Use `setStatusMessage` or the exit message to explain why a run finished early or failed (e.g., "Daily limit for free plan reached. Upgrade to continue.").
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's be more direct so they don't need to search the docs. Many devs don't know that Actor.exit has a status message

Suggested change
- Status messages: Use `setStatusMessage` or the exit message to explain why a run finished early or failed (e.g., "Daily limit for free plan reached. Upgrade to continue.").
- Status messages: Use `Actor.setStatusMessage` or `Actor.exit` message to explain why a run finished early or failed (e.g., "Daily limit for free plan reached. Upgrade to continue.").

If your Actor has specific limitations for users on the Apify free plan (e.g., restricted features, limited results), it is crucial to communicate these clearly to avoid confusion.

- Status messages: Use `setStatusMessage` or the exit message to explain why a run finished early or failed (e.g., "Daily limit for free plan reached. Upgrade to continue.").
- Avoid false errors: Do not return generic system errors or fail the run in a way that looks like a platform issue. This frustrates users and makes troubleshooting difficult.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Again, let's be more perscriptive

Suggested change
- Avoid false errors: Do not return generic system errors or fail the run in a way that looks like a platform issue. This frustrates users and makes troubleshooting difficult.
- Avoid false errors: Do not return generic system errors or fail the run in a way that looks like a platform issue. This frustrates users and makes troubleshooting difficult.
- Wrong: API usage is limited to 10 results
- Right: This Actor only allows up to 10 results for free users. Upgrade to a paid plan to receive unlimited results.


- Status messages: Use `setStatusMessage` or the exit message to explain why a run finished early or failed (e.g., "Daily limit for free plan reached. Upgrade to continue.").
- Avoid false errors: Do not return generic system errors or fail the run in a way that looks like a platform issue. This frustrates users and makes troubleshooting difficult.
- Documentation: Clearly state any limitations in your Actor's `README` and input schema descriptions so users know what to expect before running the Actor.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- Documentation: Clearly state any limitations in your Actor's `README` and input schema descriptions so users know what to expect before running the Actor.
- Documentation: Clearly state any limitations in your Actor's `README` and input schema descriptions so users know what to expect before running the Actor.
- General restrictions (like limiting the number of results) must be explained in the top-level input schema description that renders above the input editor UI.
- Feature-specific limitations must be included in the title of an input field. The title must include explanation in parenthesis such as `(paying users only)` or `(limited for free users`). E.g. `Max comments (paying users only)`.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

t-c&c Team covering store and finance matters.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants