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 - RequestSubscriptionRewards​

Nitro: SCR_GET_KICKBACK_INFO / ScrGetKickbackInfoMessageComposer

Arcturus: RequestClubCenterEvent

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

Requests the subscription rewards for the Club Center screen. Server replies with SubscriptionRewards (3277).

FieldTypeNotes
(empty)-No body fields read

C→S 2487 - RequestTargetOffer (alias)​

Nitro: GET_TARGETED_OFFER Source: GetTargetedOfferComposer

Requests the current targeted/personalised offer from the server.

Body: (empty)

C→S 1826 - PurchaseTargetedOffer​

Nitro: PURCHASE_TARGETED_OFFER

Source: PurchaseTargetOfferEvent, PurchaseTargetedOfferComposer

Purchases a targeted (personalised) offer from the shop.

FieldTypeNotes
targetedOfferIdintID of the targeted offer to purchase
amountintQuantity to purchase

C→S 2041 - SetTargetedOfferState​

Nitro: SET_TARGETTED_OFFER_STATE

Source: TargetOfferStateEvent, SetTargetedOfferStateComposer

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

FieldTypeNotes
targetedOfferIdintID of the targeted offer
stateintNew state to set

C→S 596 - GetNextTargetedOffer​

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

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

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

C→S 462 - BuildersClubPlaceWallItem​

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

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

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

C→S 1051 - BuildersClubPlaceRoomItem​

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

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

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)

C→S 801 - GetDirectClubBuyAvailable​

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

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

FieldTypeNotes
daysintNumber of days of Club membership to query availability for

C→S 603 - GetHabboBasicMembershipExtendOffer​

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

Requests the subscription membership extend offer.

Body: (empty)

C→S 742 - GetCatalogPageExpiration​

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

Requests the expiration date for a specific catalog page.

FieldTypeNotes
kstringCatalog page identifier to query expiration for

C→S 1347 - GetIsOfferGiftable​

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

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

FieldTypeNotes
kintCatalog offer ID to check giftability for

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 has opened the "New Additions" catalog page.

Body: (empty)

C→S 2638 - WelcomeOpenGift​

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

Opens a welcome gift furniture item. Nitro-only.

FieldTypeNotes
furniIdintFurniture item ID of the welcome gift to open

C→S 2735 - PurchaseBasicMembershipExtension​

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

Purchases a subscription extension. Nitro-only.

FieldTypeNotes
kintSubscription extension offer ID being purchased

C→S 3135 - GetCatalogPageWithEarliestExp​

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

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

Body: (empty)

C→S 3483 - ShopTargetedOfferViewed​

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

Reports that the user has viewed a targeted offer.

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

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

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

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

FieldTypeNotes
unknownbooleanAlways false

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

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

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

FieldTypeNotes
(empty)-No body fields

S→C 3914 - PurchaseFailedBalance​

Nitro: NOT_ENOUGH_BALANCE

Source: NotEnoughPointsTypeComposer, NotEnoughBalanceMessageEvent

Signals that the purchase failed due to insufficient balance.

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

S→C 377 - LimitedSoldOut​

Nitro: LIMITED_SOLD_OUT

Source: AlertLimitedSoldOutComposer, LimitedEditionSoldOutEvent

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

FieldTypeNotes
(empty)-No body fields

S→C 56 - PresentItemOpened (gift variant)​

Nitro: GIFT_OPENED

Source: PresentItemOpenedComposer, PresentOpenedMessageEvent

Delivers the contents of an opened gift box.

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

S→C 2234 - GiftConfiguration​

Nitro: GIFT_WRAPPER_CONFIG

Source: GiftConfigurationComposer, GiftWrappingConfigurationEvent

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

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

S→C 1517 - GiftRecipientNotFound​

Nitro: GIFT_RECEIVER_NOT_FOUND

Source: GiftReceiverNotFoundComposer, GiftReceiverNotFoundEvent

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

FieldTypeNotes
(empty)-No body fields

S→C 3336 - VoucherRedeemed​

Nitro: REDEEM_VOUCHER_OK

Source: RedeemVoucherOKComposer, VoucherRedeemOkMessageEvent

Confirms successful voucher redemption. Body contains two empty strings.

FieldTypeNotes
unknown1stringAlways empty
unknown2stringAlways empty

S→C 714 - RedeemVoucherError​

Nitro: REDEEM_VOUCHER_ERROR

Source: RedeemVoucherErrorComposer, VoucherRedeemErrorMessageEvent

Signals that voucher redemption failed.

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

S→C 2347 - BundleDiscountInfo​

Nitro: BUNDLE_DISCOUNT_RULESET

Source: DiscountComposer, BundleDiscountRulesetMessageEvent

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

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

S→C 2405 - ClubOffers​

Nitro: CLUB_OFFERS

Source: ClubDataComposer, HabboClubOffersMessageEvent

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 subscription offers.

FieldTypeNotes
offerCountintNumber of HC subscription offers
windowIdintCatalog window context ID

S→C 3277 - SubscriptionRewards​

Nitro: SCR_SEND_KICKBACK_INFO / ScrSendKickbackInfoMessageParser

Arcturus: ClubCenterDataComposer

Delivers subscription reward data for the current user.

FieldTypeNotes
subscriptionStreakintCurrent consecutive days with an active subscription
firstSubscriptionDatestringFirst subscription date (dd-mm-yyyy)
kickbackPercentagedoubleKickback percentage
totalCreditsMissedintUnused - always 0
totalCreditsRewardedintUnused - always 0
totalCreditsSpentintTotal credits spent with an active subscription
creditRewardStreakBonusintExtra credits from streak bonus
creditRewardMonthlySpentintCredits from monthly spend reward
timeUntilPaydayintMinutes until next kickback payday

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)