Skip to main content

Catalog

Catalog purchase flow:

Client Server
│ │
│── [1195] CatalogMode ───>│ body: "normal" (string, not int)
│ │ server reads MODE.equalsIgnoreCase("normal")
│<─ [1032] Categories ─────│ full catalog tree
│ │ (server sends this in response to [1195])
│ │
│── [2529] BuildersClubQueryFurniCount ──>│ body: (empty)
│ (Nitro: BUILDERS_CLUB_QUERY_FURNI_COUNT) │ Arcturus handler reads nothing;
│ (ID collision - see §45.1) │ treated as a no-op catalog index
│ │ request in this server version
│ │
│── [412] RequestCategory >│ pageId:int, offerId:int(-1), mode:string("NORMAL")
│<─ [804] CatalogCategory ─│ page contents (items, images, text)
│ │
│── [3492] BuyItem ───────>│ pageId:int, itemId:int, extraData:string(""),
│ │ count:int(1)
│ │ → check cooldown (PURCHASE_COOLDOWN)
│ │ → validate credits ≥ price
│ │ → deduct credits / seasonal currency
│ │ → add item to inventory DB
│ │
│ ┌── [869] Purchased #1 ──────────────────────────│
│ │ (empty - closes the "purchasing..." spinner; │
│ │ sent immediately regardless of item type) │
│<─┘ │
│ │
│ ┌── [3151] InventoryRefresh ──────────────────────│
│ │ (empty - tells client to reload full │
│ │ inventory; sent for most item types as a │
│ │ fallback rather than per-item updates) │
│<─┘ │
│ │
│ NOTE: [3475] UserCredits is NOT sent here by │
│ default. The client must request credits with │
│ [273] RequestUserCredits to see updated balance. │
│ Currency deduction is reflected only via │
│ [2018] UserCurrency if seasonal currency was used.│

[869] Purchased vs [3151] InventoryRefresh: The server always sends Purchased first (to close the loading UI), then InventoryRefresh (to force a full inventory reload). This is a legacy fallback - individual per-item [104] InventoryItemUpdate sends only happen in specific paths (e.g. pet purchase). The original diagram incorrectly showed [104] InvItemUpdate and [3475] UserCredits as standard post-purchase sends; both are conditional on item type.

C→S 1195 - RequestCatalogIndex

Nitro: GET_CATALOG_INDEX - Mode→INDEX. Nitro frames this as fetching the catalog index. Source: RequestCatalogModeEvent, GetCatalogIndexComposer

Body:
mode: string "normal" or "BUILDERS_CLUB"

Requests the catalog index (top-level page tree) for the given mode ('normal' or 'BUILDERS_CLUB').

C→S 2529 - RequestBuildersClubItemCount

Nitro: BUILDERS_CLUB_QUERY_FURNI_COUNT - ⚠ COLLISION: Arcturus handles this as a catalog index request (body empty; handler reads nothing). Nitro sends it to query Builders Club furniture count. See §45. Source: RequestCatalogIndexEvent, BuildersClubQueryFurniCountMessageComposer

Body: (empty)

Requests the Builders Club furniture count, or (Arcturus) a catalog index; see §45 for the collision note.

C→S 412 - RequestCatalogCategory

Nitro: GET_CATALOG_PAGE - Request→GET. Source: RequestCatalogPageEvent, GetCatalogPageComposer

Requests the content of a specific catalog category page by ID.

Body:
categoryId: int
offerId: int (-1 if none)

C→S 2594 - CatalogSearchedItem

Nitro: GET_PRODUCT_OFFER

Source: CatalogSearchedItemEvent, GetProductOfferComposer

FieldTypeNotes
offerIdintID of the catalog offer to look up

Looks up a catalog offer by offer ID and returns its page and details. Used by item search.

C→S 3492 - CatalogPurchase

Nitro: CATALOG_PURCHASE - Buy→PURCHASE; item dropped. Source: CatalogBuyItemEvent, PurchaseFromCatalogComposer

Purchases an item from the catalog by category and item ID, with optional extra data and quantity.

Body:
categoryId: int
itemId: int
extraData: string Pet name, figure data, etc.

C→S 1411 - CatalogPurchaseGift

Nitro: CATALOG_PURCHASE_GIFT - Buy→PURCHASE. Source: CatalogBuyItemAsGiftEvent, PurchaseFromCatalogAsGiftComposer

Purchases a catalog item as a gift for another user, with gift-wrap customisation.

Body:
categoryId: int
itemId: int
extraData: string
receiverName: string
giftMessage: string
spriteId: int Gift wrap sprite
boxId: int
ribbonId: int

C→S 418 - RequestGiftWrappings

Nitro: GET_GIFT_WRAPPING_CONFIG

Source: RequestGiftConfigurationEvent, GetGiftWrappingConfigurationComposer

FieldTypeNotes
(empty)-No body fields read

Notes: Requests gift wrapping configuration (wrapper types, bow types, ribbon types). Response is GIFT_WRAPPER_CONFIG (S→C 2234).

Requests the gift wrapping configuration (wrapper styles, box types, ribbons) for the gift purchase UI.

C→S 339 - RedeemVoucher

Nitro: CATALOG_REDEEM_VOUCHER

Source: RedeemVoucherEvent, RedeemVoucherMessageComposer

FieldTypeNotes
voucherCodestringThe voucher code string to redeem

Submits a voucher code for redemption. Server responds with VoucherRedeemed or RedeemVoucherError.

C→S 3115 - RedeemItem

Nitro: ITEM_EXCHANGE_REDEEM

Source: RedeemItemEvent, FurnitureExchangeComposer

FieldTypeNotes
itemIdintID of the exchangeable furni item to redeem for credits

Redeems an exchangeable furniture item (e.g. a credit furniture) for credits.

C→S 3374 - RedeemClothing

Nitro: ITEM_CLOTHING_REDEEM

Source: RedeemClothingEvent, RedeemItemClothingComposer

FieldTypeNotes
itemIdintID of the clothing box furniture item to open

Opens a clothing box furniture item to add its clothing to the user's wardrobe.

C→S 223 - RequestBundleDiscountInfo

Nitro: GET_BUNDLE_DISCOUNT_RULESET

Source: RequestDiscountEvent, GetBundleDiscountRulesetComposer

FieldTypeNotes
(empty)-No body fields read

Notes: Requests the bundle discount configuration. Response is BUNDLE_DISCOUNT_RULESET (S→C 2347).

Requests the bundle discount ruleset used to calculate multi-item purchase discounts.

C→S 3285 - RequestClubOffers

Nitro: GET_CLUB_OFFERS

Source: RequestClubDataEvent, GetClubOffersMessageComposer

FieldTypeNotes
windowIdintCatalog window context ID

Notes: Response is CLUB_OFFERS (S→C 2405) via ClubOffers.

Requests the current Habbo Club subscription offers for the catalog.

C→S 3407 - CatalogPurchaseClub

Nitro: PURCHASE_VIP_MEMBERSHIP_EXTENSION

Source: CatalogBuyClubDiscountEvent, PurchaseVipMembershipExtensionComposer

FieldTypeNotes
(empty)-No body fields read

Purchases a VIP Club membership extension via the catalog.

C→S 2462 - RequestClubDiscount

Nitro: GET_HABBO_CLUB_EXTEND_OFFER

Source: CatalogRequestClubDiscountEvent, GetHabboClubExtendOfferMessageComposer

FieldTypeNotes
(empty)-No body fields read

Requests the Habbo Club extend offer details (price and duration options).

C→S 487 - RequestClubGifts

Nitro: GET_CLUB_GIFT_INFO

Source: RequestClubGiftsEvent, GetClubGiftInfo

FieldTypeNotes
(empty)-No body fields read

Notes: Requests info about available HC gifts. Response is CLUB_GIFT_INFO (S→C 619).

Requests the available Habbo Club gift selection info.

C→S 2276 - CatalogSelectClubGift

Nitro: CATALOG_SELECT_VIP_GIFT

Source: CatalogSelectClubGiftEvent, SelectClubGiftComposer

FieldTypeNotes
itemNamestringInternal name of the selected HC gift item

Selects a specific item as the user's Habbo Club gift reward.

C→S 869 - RequestClubCenter

Nitro: SCR_GET_KICKBACK_INFO

Source: RequestClubCenterEvent, ScrGetKickbackInfoMessageComposer

FieldTypeNotes
(empty)-No body fields read

Notes: Requests the Habbo Club Kickback (Credits Centre) data. Response is SCR_SEND_KICKBACK_INFO (S→C 3277).

Requests Habbo Club Kickback (Credits Centre) data for the Club Center page.

C→S 2487 - RequestTargetOffer (alias)

Nitro: GET_TARGETED_OFFER Source: GetTargetedOfferComposer

Requests the current targeted/personalised offer from the server. No parameters.

Body: (empty)

Requests the current targeted offer from the server. No parameters.

C→S 1826 - PurchaseTargetedOffer

Nitro: PURCHASE_TARGETED_OFFER

Source: PurchaseTargetOfferEvent, PurchaseTargetedOfferComposer

FieldTypeNotes
targetedOfferIdintID of the targeted offer to purchase
amountintQuantity to purchase

Purchases a targeted (personalised) offer from the shop.

C→S 2041 - SetTargetedOfferState

Nitro: SET_TARGETTED_OFFER_STATE

Source: TargetOfferStateEvent, SetTargetedOfferStateComposer

FieldTypeNotes
targetedOfferIdintID of the targeted offer
stateintNew state to set

Updates the state of a targeted offer (e.g. mark as viewed or dismissed).

C→S 596 - GetNextTargetedOffer

Nitro: GET_NEXT_TARGETED_OFFER Note: No Arcturus handler - Nitro only. Source: GetNextTargetedOfferComposer

FieldTypeNotes
kintCurrent offer ID (server advances to next from this point)

Requests the next targeted offer after the current one. Nitro-only.

C→S 462 - BuildersClubPlaceWallItem

Nitro: BUILDERS_CLUB_PLACE_WALL_ITEM Note: No Arcturus handler - Nitro only. Source: BuildersClubPlaceWallItemMessageComposer

FieldTypeNotes
kintFurniture item ID (from inventory)
_arg_2intRoom object ID
_arg_3stringWall position string (e.g. :w=1,2 l=3,4 r)
_arg_4stringExtra data / state string

Places a wall furniture item using Builders Club mode (bypasses buy step). Nitro-only.

C→S 1051 - BuildersClubPlaceRoomItem

Nitro: BUILDERS_CLUB_PLACE_ROOM_ITEM Note: No Arcturus handler - Nitro only. Source: BuildersClubPlaceRoomItemMessageComposer

FieldTypeNotes
kintFurniture item ID (from inventory)
_arg_2intRoom object ID
_arg_3stringState / extra data string
_arg_4intX tile position
_arg_5intY tile position
_arg_6intRotation (0–7)

Places a floor furniture item using Builders Club mode. Nitro-only.

C→S 801 - GetDirectClubBuyAvailable

Nitro: GET_DIRECT_CLUB_BUY_AVAILABLE Note: No Arcturus handler - Nitro only. Source: GetDirectClubBuyAvailableComposer

FieldTypeNotes
daysintNumber of days of Club membership to query availability for

Queries whether a direct Club purchase is available for a given number of days. Nitro-only.

C→S 603 - GetHabboBasicMembershipExtendOffer

Nitro: GET_HABBO_BASIC_MEMBERSHIP_EXTEND_OFFER Note: No Arcturus handler - Nitro only. Source: GetHabboBasicMembershipExtendOfferComposer

Requests the Habbo Basic Club membership extend offer. Nitro-only.

Body: (empty)

Requests the Habbo Basic Club membership extend offer. No parameters.

C→S 742 - GetCatalogPageExpiration

Nitro: GET_CATALOG_PAGE_EXPIRATION Note: No Arcturus handler - Nitro only. Source: GetCatalogPageExpirationComposer

FieldTypeNotes
kstringCatalog page identifier to query expiration for

Requests the expiration date for a specific catalog page. Nitro-only.

C→S 1347 - GetIsOfferGiftable

Nitro: GET_IS_OFFER_GIFTABLE Note: No Arcturus handler - Nitro only. Source: GetIsOfferGiftableComposer

FieldTypeNotes
kintCatalog offer ID to check giftability for

Checks whether a specific catalog offer can be sent as a gift. Nitro-only.

C→S 2150 - MarkCatalogNewAdditionsPageOpened

Nitro: MARK_CATALOG_NEW_ADDITIONS_PAGE_OPENED Note: No Arcturus handler - Nitro only. Source: MarkCatalogNewAdditionsPageOpenedComposer

Notifies the server that the client opened the 'New Additions' catalog page. Nitro-only.

Body: (empty)

Notifies the server that the client has opened the "New Additions" catalog page. No parameters.

C→S 2638 - WelcomeOpenGift

Nitro: WELCOME_OPEN_GIFT Note: No Arcturus handler - Nitro only. Source: OpenWelcomeGiftComposer

FieldTypeNotes
furniIdintFurniture item ID of the welcome gift to open

Opens a welcome gift furniture item. Nitro-only.

C→S 2735 - PurchaseBasicMembershipExtension

Nitro: PURCHASE_BASIC_MEMBERSHIP_EXTENSION Note: No Arcturus handler - Nitro only. Source: PurchaseBasicMembershipExtensionComposer

FieldTypeNotes
kintBasic Club membership extension offer ID to purchase

Purchases a Basic Club membership extension. Nitro-only.

C→S 3135 - GetCatalogPageWithEarliestExp

Nitro: GET_CATALOG_PAGE_WITH_EARLIEST_EXP Note: No Arcturus handler - Nitro only. Source: GetCatalogPageWithEarliestExpiryComposer

Requests the catalog page containing the earliest-expiring limited offer. Nitro-only.

Body: (empty)

Requests the catalog page with the earliest-expiring limited offer. No parameters.

C→S 3483 - ShopTargetedOfferViewed

Nitro: SHOP_TARGETED_OFFER_VIEWED Note: No Arcturus handler - Nitro only. Source: ShopTargetedOfferViewedComposer

FieldTypeNotes
kintTargeted offer ID that was viewed
_arg_2intUnknown int (view context / placement)

Notifies the server that the user viewed a targeted offer in the shop. Nitro-only.

Reports that the user has viewed a targeted offer; carries the offer ID and view context. Nitro-only.

S→C 3828 - BuildersClubItemCount

Source: CatalogModeComposer, BuildersClubFurniCountMessageEvent

Delivers the user's current Builders Club furniture quota.

Body: (empty)

S→C 1032 - CatalogCategories

Source: CatalogPagesListComposer, CatalogPagesListEvent

Delivers the full catalog category tree, including page names, icons, and child page structure.

Body:
visible: boolean
icon: int
categoryId: int
name: string
description: string
countItems: int
[countItems]:
itemCatalogId: int
countChildPages: int
[countChildPages]:
(recursive same structure)
newAdditionsAvailable: boolean

S→C 804 - CatalogCategory

Source: CatalogPageComposer, CatalogPageMessageEvent

Delivers the full content of a catalog page, including images, descriptions, and purchasable offer items.

Body:
categoryId: int
catalogType: string
templateName: string
imageCount: int
[imageCount]:
image: string
descriptionLinesCount: int
[descriptionLinesCount]:
description: string
itemCount: int
[itemCount CatalogItem]:
itemCatalogId: int
name: string
isRentable: boolean
price: int
altPrice: int
altCurrency: int
isGiftable: boolean
productsCount: int
[productsCount]:
productType: string "s"=floor, "i"=wall
*[if type == "b"]: # badge
extraParam: string
*[else]
itemClassId: int
extraParam: string
productCount: int
isLimited: boolean
*[if limited]:
limitedTotal: int
limitedLeft: int
clubLevel: boolean
bundlePurchaseAllowed: boolean
isPet: boolean
previewImage: string
offerId: int (-1 if none)
acceptSeasonCurrency: boolean
itemCount: int
[itemCount HighlightedItem]:
position: int
name: string
image: string
itemType: string "s"=single, "i"=item
itemsCount: int
[itemsCount]:
type: string
spriteId: int
count: int
isLimited: boolean
*[if limited]: limitedSells:int, limitedStack:int
creditsPrice: int
altPrice: int
altCurrency: int
isPackage: boolean

S→C 1866 - CatalogUpdated

Nitro: CATALOG_PUBLISHED

Source: CatalogUpdatedComposer, CatalogPublishedMessageEvent

FieldTypeNotes
unknownbooleanAlways false

Notes: Broadcast to all users when the catalog is reloaded server-side.

Broadcast when the catalog is reloaded server-side, prompting clients to refresh.

S→C 869 - Purchased

Nitro: CATALOG_PURCHASE_OK Source: PurchaseOKComposer, PurchaseOKMessageEvent

Confirms a successful catalog purchase. Contains the full offer details.

FieldTypeNotes
offerIdintCatalog offer ID purchased
localizationIdstringLocalization key for the offer
rentbooleanWhether this was a rental
priceCreditsintPrice in credits
priceActivityPointsintPrice in activity points
priceActivityPointsTypeintActivity point currency type
giftablebooleanWhether this offer can be gifted
productCountintNumber of products
[productCount × product]CatalogProductProduct data
clubLevelintHC level required
bundlePurchaseAllowedbooleanWhether bundle purchase is allowed

Confirms a successful catalog purchase, returning the full offer details.

S→C 1404 - PurchaseFailed

Source: AlertPurchaseFailedComposer, PurchaseErrorMessageEvent

Notifies the client that a catalog purchase failed, with a reason code (insufficient credits, gift error, etc.).

Body: (empty)

S→C 3770 - PurchaseUnavailable

Nitro: CATALOG_PURCHASE_NOT_ALLOWED

Source: AlertPurchaseUnavailableComposer, PurchaseNotAllowedMessageEvent

FieldTypeNotes
(empty)-No body fields

Signals that the purchase is not allowed (e.g. feature disabled). Empty body.

S→C 3914 - PurchaseFailedBalance

Nitro: NOT_ENOUGH_BALANCE

Source: NotEnoughPointsTypeComposer, NotEnoughBalanceMessageEvent

FieldTypeNotes
isCreditsbooleanTrue if the shortfall is in credits
isPixelsbooleanTrue if the shortfall is in pixels/duckets
pointsTypeintCurrency type ID for other activity point currencies

Signals that the purchase failed due to insufficient credits or activity points.

S→C 377 - LimitedSoldOut

Nitro: LIMITED_SOLD_OUT

Source: AlertLimitedSoldOutComposer, LimitedEditionSoldOutEvent

FieldTypeNotes
(empty)-No body fields

Notes: Sent when a limited-edition item sells out. Empty body - the client already knows the context from the purchase attempt.

Signals that a limited-edition catalog item just sold out. Empty body.

S→C 56 - PresentItemOpened (gift variant)

Nitro: GIFT_OPENED

Source: PresentItemOpenedComposer, PresentOpenedMessageEvent

FieldTypeNotes
itemTypestringItem type code ("s" for floor, "i" for wall)
spriteIdintItem's sprite ID
itemNamestringItem's internal name
itemIdintNew item's inventory ID
itemType2stringType code again (repeated)
unknownbooleanUnknown flag
textstringGift message text

Delivers the contents of an opened gift box, including item details and the sender's message.

S→C 2234 - GiftConfiguration

Nitro: GIFT_WRAPPER_CONFIG

Source: GiftConfigurationComposer, GiftWrappingConfigurationEvent

FieldTypeNotes
giftsEnabledbooleanAlways true in Arcturus
specialPriceintCredits cost for gift wrapping extras
wrapperCountintNumber of wrapper style IDs
wrapperIds[]int[]Wrapper item IDs
boxCountintNumber of box types
boxTypes[]int[]Box type IDs
ribbonCountintNumber of ribbon types
ribbonTypes[]int[]Ribbon type IDs
giftFurniCountintNumber of giftable furniture items
giftFurni[]int[]Furni item IDs

Delivers gift wrapping configuration (wrapper styles, box types, ribbons, giftable furniture).

S→C 1517 - GiftRecipientNotFound

Nitro: GIFT_RECEIVER_NOT_FOUND

Source: GiftReceiverNotFoundComposer, GiftReceiverNotFoundEvent

FieldTypeNotes
(empty)-No body fields

Signals that the specified gift recipient username was not found. Empty body.

S→C 3336 - VoucherRedeemed

Nitro: REDEEM_VOUCHER_OK

Source: RedeemVoucherOKComposer, VoucherRedeemOkMessageEvent

FieldTypeNotes
unknown1stringAlways empty
unknown2stringAlways empty

Confirms successful voucher redemption. Body contains two empty strings.

S→C 714 - RedeemVoucherError

Nitro: REDEEM_VOUCHER_ERROR

Source: RedeemVoucherErrorComposer, VoucherRedeemErrorMessageEvent

FieldTypeNotes
errorCodestringError code (sent as string, e.g. "INVALID_CODE")

Notes: Error code is sent as a string - discrepancy from most error responses which use int.

Signals that voucher redemption failed, returning an error code string.

S→C 2347 - BundleDiscountInfo

Nitro: BUNDLE_DISCOUNT_RULESET

Source: DiscountComposer, BundleDiscountRulesetMessageEvent

FieldTypeNotes
maxAllowedItemsintMaximum items before discount applies
discountBatchSizeintItems per discount batch
discountAmountPerBatchintDiscount amount per batch
minDiscountsForBonusintMinimum discount batches for bonus
thresholdCountintNumber of additional discount thresholds
thresholds[]int[]Threshold values

Delivers the bundle discount ruleset for multi-item purchase discount calculations.

S→C 2405 - ClubOffers

Nitro: CLUB_OFFERS

Source: ClubDataComposer, HabboClubOffersMessageEvent

FieldTypeNotes
offerCountintNumber of HC subscription offers
windowIdintCatalog window context ID

Notes: The full offer data is written by iterating ClubOffer objects - the structure per offer is complex (type, duration, price, etc.). Nitro parses the full offer list.

Delivers the list of available Habbo Club subscription offers.

S→C 3277 - ClubCenterData

Nitro: SCR_SEND_KICKBACK_INFO

Source: ClubCenterDataComposer, ScrSendKickbackInfoMessageEvent

FieldTypeNotes
currentHcStreakintCurrent consecutive HC days
firstSubDatestringFirst subscription date (dd-mm-yyyy)
totalCreditsMissedintUnused - always 0
totalCreditsRewardedintUnused - always 0
totalCreditsSpentintTotal credits spent as HC member
creditRewardStreakBonusintExtra credits from streak bonus
creditRewardMonthlySpentintCredits from monthly spend reward
timeUntilPaydayintMinutes until next kickback payday

Delivers Habbo Club Kickback (Credits Centre) data for the current user.

S→C 619 - ClubGifts

Nitro: CLUB_GIFT_INFO

Source: ClubGiftsComposer, ClubGiftInfoEvent

FieldTypeNotes
daysTillNextGiftintDays until next HC gift is available
availableGiftsintNumber of gifts currently selectable
itemCountintTotal items in the gift catalogue
items[]repeatedPer item: id:int, clubOnly:boolean, daysRequired:int, canSelect:boolean
unknown1intAlways 0
unknown2intAlways 0

Delivers the list of available Habbo Club gift choices and how many gifts the user can still claim.

S→C 119 - TargetedOffer

Nitro: TARGET_OFFER Source: TargetedOfferComposer, TargetedOfferEvent

Delivers a targeted (personalised) offer from the catalog. Body is parsed by TargetedOfferData.

FieldTypeNotes
idintTargeted offer ID
identifierstringOffer identifier string
productstringProduct code
priceInCreditsintPrice in credits
priceInActivityPointsintPrice in activity points
activityPointTypeintActivity point currency type
purchaseLimitintMaximum number of times it can be purchased
expirationTimeintUnix timestamp when offer expires
titlestringOffer title
descriptionstringOffer description
imageUrlstringOffer image URL
extraDatastringExtra data string

Delivers a personalised targeted offer for display in the shop.

S→C 3331 - PetBreeds

Nitro: CATALOG_RECEIVE_PET_BREEDS

Source: PetBreedsComposer, SellablePetPalettesMessageEvent

FieldTypeNotes
petNamestringPet type name
breedCountintNumber of available breeds
breeds[]repeatedPer breed: race:int, colorOne:int, colorTwo:int, hasColorOne:boolean, hasColorTwo:boolean

Delivers the list of available pet breeds and palette colours for a given pet type.

S→C 1503 - PetNameError

Nitro: CATALOG_APPROVE_NAME_RESULT

Source: PetNameErrorComposer, ApproveNameMessageEvent

FieldTypeNotes
typeintResult type (0 = ok, other = error code)
valuestringThe validated name or error description

Delivers the result of a pet name validation check. Error code 0 = valid.

S→C 195 - DirectSmsClubBuy

Nitro: DIRECT_SMS_CLUB_BUY Note: No Arcturus composer - Nitro only. Source: DirectSMSClubBuyAvailableMessageEvent

(no Arcturus composer)

FieldTypeNotes
pricePointUrlstringSMS payment URL; empty string = not available
marketstringMarket/carrier identifier
lengthInDaysintClub subscription length in days

Delivers direct SMS Club purchase options. Nitro-only; no Arcturus composer.

S→C 659 - ClubGiftSelected

Nitro: CLUB_GIFT_SELECTED Note: No Arcturus composer - Nitro only. Source: ClubGiftReceivedComposer, ClubGiftSelectedEvent

(no Arcturus composer)

Confirms which club gift the user selected and what products it contains.

FieldTypeNotes
productCodestringProduct code of the selected gift
countintNumber of product entries
[count × product]CatalogProductProduct data (same structure as catalog page products)

Confirms that the user's Habbo Club gift selection was accepted.

S→C 761 - IsOfferGiftable

Nitro: IS_OFFER_GIFTABLE Note: No Arcturus composer - Nitro only. Source: IsOfferGiftableMessageEvent

(no Arcturus composer)

FieldTypeNotes
offerIdintCatalog offer ID being checked
isGiftablebooleanWhether the offer can be sent as a gift

Delivers whether a specific catalog offer can be gifted to another user.

S→C 1237 - TargetOfferNotFound

Nitro: TARGET_OFFER_NOT_FOUND Note: No Arcturus composer - Nitro only. Source: HabboMallComposer, TargetedOfferNotFoundEvent

(no Arcturus composer)

Sent when a targeted offer cannot be found.

Notifies the client that a requested targeted offer could not be found. Nitro-only.

Body: (empty)

S→C 1452 - BuildersClubExpired

Nitro: BUILDERS_CLUB_EXPIRED Note: No Arcturus composer - Nitro only. Source: BuildersClubExpiredComposer, BuildersClubSubscriptionStatusMessageEvent

(no Arcturus composer)

Sent when the user's Builders Club subscription has expired.

Notifies the client that the user's Builders Club subscription has expired. Nitro-only.

Body: (empty)

S→C 1533 - BonusRareInfo

Nitro: BONUS_RARE_INFO Note: No Arcturus composer - Nitro only. Source: BonusRareComposer, BonusRareInfoMessageEvent

(no Arcturus composer)

FieldTypeNotes
productTypestringProduct type string
productClassIdintFurniture class ID
totalCoinsForBonusintTotal coins needed to unlock the bonus rare
coinsStillRequiredToBuyintCoins the player still needs to spend

Delivers info about the current Bonus Rare (a random rare item awarded for purchases during a period).

S→C 2293 - WelcomeGiftChangeEmailResult

Nitro: WELCOME_GIFT_CHANGE_EMAIL_RESULT Note: No Arcturus composer - Nitro only. Source: WelcomeGiftErrorComposer, WelcomeGiftChangeEmailResultEvent

(no Arcturus composer)

FieldTypeNotes
resultintResult code (0 = success)

Delivers the result of the welcome gift email change request.

S→C 2515 - CatalogEarliestExpiry

Nitro: CATALOG_EARLIEST_EXPIRY Note: No Arcturus composer - Nitro only. Source: HotelViewExpiringCatalogPageCommposer, CatalogPageWithEarliestExpiryMessageEvent

(no Arcturus composer)

Delivers the catalog page with the earliest expiration date.

FieldTypeNotes
pageIdintCatalog page ID
offerIdintOffer ID
expirationDatestringExpiration date string

Delivers the catalog page that contains the next expiring limited offer.

S→C 2668 - CatalogPageExpiration

Nitro: CATALOG_PAGE_EXPIRATION Note: No Arcturus composer - Nitro only. Source: CatalogPageExpirationEvent

FieldTypeNotes
pageIdintCatalog page ID
pageNamestringCatalog page name
secondsToExpiryintSeconds until the page/offer expires
imagestringExpiry image URL

Delivers the expiration date/time for a specific catalog page.

S→C 2707 - WelcomeGiftStatus

Nitro: WELCOME_GIFT_STATUS Note: No Arcturus composer - Nitro only. Source: WelcomeGiftComposer, WelcomeGiftStatusEvent

FieldTypeNotes
emailstringAccount email address
isVerifiedbooleanWhether the email is verified
allowChangebooleanWhether the user may change their email
furniIdintWelcome gift furniture item ID (-1 if none)
requestedByUserbooleanWhether the status was requested by the user

Delivers whether the user has a pending welcome gift to claim.

S→C 3388 - ProductOffer

Nitro: PRODUCT_OFFER Note: No Arcturus composer - Nitro only. Source: CatalogSearchResultComposer, ProductOfferEvent

(no Arcturus composer)

Delivers a product offer from the catalog. Body is parsed by ProductOfferEvent - same structure as a catalog page offer.

Delivers a single product offer from the catalog, typically in response to a deep-link or search. Nitro-only.

Body: (empty)

S→C 3964 - ClubExtendedOffer

Nitro: CLUB_EXTENDED_OFFER Note: No Arcturus composer - Nitro only. Source: ExtendClubMessageComposer, HabboClubExtendOfferMessageEvent

(no Arcturus composer)

Delivers a Habbo Club extended offer. Body is parsed by HabboClubExtendOfferMessageParser.

Delivers a Habbo Club extended offer for the extend-membership flow. Nitro-only; no Arcturus composer - body is parsed by HabboClubExtendOfferMessageParser.

Body: (empty)