@noah The team is working on this, and we’ll share any progress here once there’s something concrete to report.
JasonL
Posts
-
-
Hi, thanks for the detailed report. At the moment, there isn’t a per-promotion exclusion toggle for deployments; the currently recommended way is to keep
Preserve Products+Pricing & Promotionsin the target environment. Your request for selective promotion exclusion makes sense. I’ll pass this along as a feature request for the team to consider. -
Hi @gyutaelee,
-
For one-way follow: brainCloud doesn’t have a built-in one-way “follow” graph, so you’ll need to implement your own follower/following system using one of the user data mechanisms (e.g. global or entity data) to track who follows whom. This keeps it independent of the Friends API, which is designed around mutual relationships.
GetPresenceOfUsers()works with any valid profile IDs, it does not require a Friend relationship between the players to return presence info. -
For the referral rewards question: I’m going to forward this to our team to review the best server-side approach for triggering rewards for both the referrer and referee once the milestone (like reaching level 3) is reached.
Thanks for the detailed explanation of your use cases.
-
-
Did you call
CachePurchasePayloadContext()with thepromotionIdbefore callingverifyPurchase()? That’s the piece that passes the promotion ID through and should trigger an increase in the maxPurchases counter. -
If your promotion is for a cash product and the promotional product is set to
Not for Sale, you need to complete the flow by callingverifyPurchasein brainCloud with thepurchasePayloadfrom the store.As long as that payload contains the
promotionIdyou received fromGetEligiblePromotions, the promotion will be correctly attributed and the server-side flow will reach the counter increment logic.Also make sure you set
maxPurchaseson the promotion configuration page so the system knows when to stop returning that promotion for the user.As for your feature request to allow promotions without requiring a discount, I will forward this to our team for review.
-
Hi,
GetEligiblePromotionsis snapshot-driven, not fully real-time. It relies on a cached promotion-eligibility snapshot stored on the UserProfile, which is only refreshed at specific points.-
GetEligiblePromotionsdoes not reevaluate Automated Promotion segment conditions (like experienceLevel >= 4) against the latest player state on every call. Instead, it uses the last calculated promotion snapshot that was written to the UserProfile. That snapshot is normally refreshed at login, or when you explicitly call theRefreshPromotionsCAPI. -
Because of that, the “delay” you are seeing is essentially “until the next snapshot refresh.” In your current flow, that refresh happens on the next login, which is why restarting the app makes the promotion suddenly appear. There is no fixed time-based delay; it is purely tied to when the snapshot is updated.
-
To make the promotion available immediately mid-session, add an explicit refresh step to your flow. After your CloudCode call to incrementExperiencePoints (once the player has reached level 4), call
RefreshPromotionson the client, and then callGetEligiblePromotions. That will force an immediate refresh of the promotion snapshot so the level-4 promotion is returned without requiring a new session.
API details for
RefreshPromotions:
https://docs.braincloudservers.com/api/capi/appstore/refreshpromotions. -
-
Thanks for the suggestions, we will look into it...
-
Q1: The removed player is completely excluded from reward calculation, so if the deletion happens before the job runs, that player is never iterated over and receives no rank or rewards.
Q2: Yes, the modified score will be used. The job always reads live state. Note that whether the score actually gets modified depends on the leaderboard type (e.g., for the LOW_VALUE type, only updates if the new score is less than the existing)
Q3: No backfilling, the next joiner goes to the latest instance, not the freed spot in ^2. No loop over earlier instances (^1, ^2) ever happens. The next joiner goes to ^3 (or ^4 if ^3 is full). The freed spot in ^2 stays empty permanently. -
No,
RemovePlayerScore()does NOT handle reward reversals. You need to handle that manually. Also note that if the leaderboard is configured for a tournament, it will throw an exception and refuse to remove the score. CallLeaveTournament()for a tournament-based leaderboard, but it does not reverse rewards either. -
The aggregation that counts new users is not real time, it runs at hourly granularity, so there can be a delay before the stats reflect the actual number of users. At the time of checking again, the numbers had updated as follows

-
Also, there’s an option on the deployment page to exclude push notification certificates—“Do Not Overwrite Push Notification Certificates.” Did you enable this option during your deployment?
-
FYI, you can use the Report service APIs to retrieve this data: https://docs.braincloudservers.com/api/capi/report/
-
You can safely delete and update these push certificates after deployment if they’re no longer needed in another environment.
-
We’re planning some major changes to our push notification system, it’s more than just adding a few titles and content fields to the templates. It's not a near-term, stay tuned!
-
We will review it.
-
Thanks for your suggestion, we will review it...
-
Yes, changing the reset cycle automatically reschedules result/reward processing, but only while the
TournamentResultsjob is still inScheduledstate. If the job has already been fired or transitioned out ofScheduled, the update is silently ignored. The new rotation's end time gets stored, but the old job has already run (or is running), so no re-processing occurs for the current rotation. There isn't a force-end rotation API, but as a workaround, you can manually set arotationResetDateto a near-future time. -
You can find the Knowledge Base link on our documentation site, which is linked to https://getbraincloud.com/.

-
Hi Francesco, thanks for the suggestion about the folder-level import/export feature. I will have our team review it. FYI, you could script the uploads using the SysPrepareUpload S2S API to avoid doing it manually through the portal.
New users are never counted — all users appear as Returning Users after launch
Feature Request / Question: Selective Promotion Exclusion During App Deployment
Two Questions: Follow System & Referral Rewards
Automated Promotions with no discount — "Not for Sale" workaround and purchase count tracking
Automated Promotions with no discount — "Not for Sale" workaround and purchase count tracking
Does GetEligiblePromotions trigger Automated Promotions in real-time after XP level update?
missing features
Does LeaderboardService.RemovePlayerScore revert rewards?
Does LeaderboardService.RemovePlayerScore revert rewards?
NewUser detection issue
Option to exclude certificate settings in deploy
CSV Downloads of Charts
Option to exclude certificate settings in deploy
Notification Templates
Notification Templates
Request for Granular Migration Options in Deployment (Excluding DivisionSetIds)
Inquiry Regarding Tournament Reset Schedules and Early Season Termination
AWS Gamelift integration guide
Bulk upload/download of Files folders